A1·ActiveMQ在Spring中的配置(纯后端)

版权声明:转载声明地址即可 https://blog.csdn.net/lycz_tpself/article/details/81115918

      通过以下配置,可以实现java后端的ActiveMQ配置,如果想要在前段页面显示,可以参照https://blog.csdn.net/lycz_tpself/article/details/81123461

  • 配置使用的是maven方式,下面给出AMQ所需的jar包(仅提供了AMQ额外需要的,Spring的请自行搞定)
        <!-- Java JMS 原生API -->
        <dependency>
            <groupId>javax.jms</groupId>
            <artifactId>javax.jms-api</artifactId>
            <version>2.0.1</version>
        </dependency>
        <!-- spring-jms API -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- activemq核心包 -->
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-core</artifactId>
            <version>5.7.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-spring</artifactId>
            <version>5.15.4</version>
        </dependency>
  •  消息监听类的位置

  • Spring中的配置文件 (总的配置代码在图片下面)

 

 

下图的destination对应上上上张图中设置的通道名称 ,ref指向上图中监听类bean的id,method指向监听类中的监听方法名称

配置代码:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jms="http://www.springframework.org/schema/jms" xmlns:amq="http://activemq.apache.org/schema/core"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:c="http://www.springframework.org/schema/c" xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
		http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">

<!-- activemq相关配置,此配置方式需要添加amq对应的命名空间 -->
    <!-- 连接工厂 -->
    <amq:connectionFactory id="amqConnectionFactory" brokerURL="tcp://localhost:61616"/>
    <!-- 设置预取策略 -->
    <amq:prefetchPolicy id="prefetchPolicy" queuePrefetch="1" topicPrefetch="1000"/>
    <!--为了提高效率,配置一个连接池 -->
    <bean id="cachedConnectionFactory"
          class="org.springframework.jms.connection.CachingConnectionFactory"
          p:targetConnectionFactory-ref="amqConnectionFactory"
          p:sessionCacheSize="10"/>
    <!-- 配置消息终点 -->
    <amq:queue id="spittleQueue" physicalName="online.exam.queue"/>
    <amq:topic id="spittleTopic" physicalName="online.exam.topic"/>
    <bean id="messageConverter"
          class="org.springframework.jms.support.converter.SimpleMessageConverter"/>
    <!-- 配置JmsTemplate(用于简化代码) -->
    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"
          p:defaultDestination-ref="spittleTopic"
          p:messageConverter-ref="messageConverter">
        <constructor-arg ref="amqConnectionFactory" />
    </bean>
    <!-- 消息监听 -->
    <bean id="messageListener1" class="controller.amq.MessageListener1" />
    <bean id="messageListener2" class="controller.amq.MessageListener2" />
    <bean id="messageListener3" class="controller.amq.MessageListener3" />
    <bean id="messageListener4" class="controller.amq.MessageListener4" />
    <!-- listener-container 默认是queue类型的 -->
    <jms:listener-container connection-factory="amqConnectionFactory">
        <jms:listener destination="spittle.alert.queue" ref="messageListener1" method="onMessage" />
        <jms:listener destination="spittle.alert.queue" ref="messageListener2" method="onMessage" />
    </jms:listener-container>
    <jms:listener-container destination-type="topic" connection-factory="amqConnectionFactory">
        <jms:listener destination="biz1.topic" ref="messageListener3" method="onMessage" />
        <jms:listener destination="biz1.topic" ref="messageListener4" method="onMessage" />
    </jms:listener-container>
  • 生产者代码(主要看红框)

  • 消费者代码

系统启动后,进入http://127.0.0.1:8161/admin/查看AMQ信息

点击topic的active subscribers(每一条监听都有client id)

猜你喜欢

转载自blog.csdn.net/lycz_tpself/article/details/81115918
a1
今日推荐