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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM