MQ JMS 配置说明

<?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:jms="http://www.springframework.org/schema/jms"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/jms
        http://www.springframework.org/schema/jms/spring-jms-4.0.xsd">

    <bean id="amqConnectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">
        <property name="clientID" value ="test.clientID"></property>
        <property name="brokerURL" value="tcp://127.0.0.1:61616"/>
        <property name="userName" value="admin"/>
        <property name="password" value="admin"/>
    </bean>

    <bean id="connectionFactory"
          class="org.springframework.jms.connection.CachingConnectionFactory">
        <property name="targetConnectionFactory" ref="amqConnectionFactory"/>
        <property name="sessionCacheSize" value="100"/>
    </bean>


    <!-- Message producer -->
    <!-- Queue -->
    <bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">
        <constructor-arg ref="connectionFactory"/>
        <property name="pubSubDomain" value="false"/>
    </bean>

    <!-- Topic -->
    <bean id="jmsTopicTemplate" class="org.springframework.jms.core.JmsTemplate">
        <constructor-arg ref="connectionFactory"/>
        <property name="pubSubDomain" value="true"/>
    </bean>

  
    
       <jms:listener-container destination-type="durableTopic" 
                               recovery-interval="60000" 
                            container-type="default" 
                            client-id="test.clientID"  
                            connection-factory="connectionFactory" 
                            container-class="com.test.TestContainer" 
                            acknowledge="auto">
        <jms:listener subscription="test.Consumer" destination="test.topic.name" ref="testQueueConsumer"/>
    </jms:listener-container>
</beans>

 

上述配置是 配置的 topic模式

如果要设置clientID, 持久化订阅,则需要注意如下几点:

1. connectFactory 中要添加 

<property name="clientID" value ="test.clientID"></property>

2. listener-container 中 

destination-type="durableTopic"

client-id="test.clientID"  

 

recovery-interval 为间隔刷新监听的时间,单位是毫秒, 默认是5秒

container-type 是container的类型,值可以是

- default  ( DefaultMessageListenerContainer )
- simple  (SimpleMessageListenerContainer)

常用的是 default

如果想要自定义container,则

container-class=" "  值为container的全路径,包括包名

通常自定义的container 需要继承 DefaultMessageListenerContainer 或者 SimpleMessageListenerContainer, 同时 container-type也要和父类保持一致

若是使用jar内默认的 ,则可以不配置改属性

 

jms-listener 说明

subscription: 持久化订阅者名称, 设置这个属性,服务器每次重启后,都不会生成新的,一直只有这一个

destination:    监听的 topic 的值

ref : 实际的消费 类

 

jar包引用如下:

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-core</artifactId>
    <version>5.7.0</version>
</dependency>
<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-pool</artifactId>
    <version>5.13.0</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jms</artifactId>
    <version>${spring.version}</version>
</dependency>

 

posted @ 2017-07-18 15:19  lyhappyday  阅读(3258)  评论(1编辑  收藏  举报