针对项目中实时更新jvm中缓存的信息,在集群情况下,采用发布订阅模式。
首先在项目配置文件中设置
<!-- TOPIC MQ -->
<bean id="myTopicDestination" class="org.apache.activemq.command.ActiveMQTopic">
<constructor-arg>
<value>Test_02</value>
</constructor-arg>
</bean>
<!-- 配置JMS连接工厂 -->
<bean id="myConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
<!-- 接收者ID 此处动态获取tomcat中配置的clientID:jms.topic.clientId -->
<property name="clientId" value="${jms.topic.clientId}" />
<property name="targetConnectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<!-- MQ地址 -->
<property name="brokerURL" value="${activeMq.broker.url}" />
</bean>
</property>
</bean>
<!-- 生产消息配置 (自己定义)-->
<bean id="myTopicConsumer" class="cn.xxx.listener.TopicStaticVersionListener" />
<!-- 消息监听容器 -->
<bean id="myListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="myConnectionFactory" />
<!-- 发布订阅模式 -->
<property name="pubSubDomain" value="true"/>
<!-- 接收者ID -->
<property name="clientId" value="${jms.topic.clientId}" />
<property name="durableSubscriptionName" value="${jms.topic.clientId}"/>
<property name="destination" ref="myTopicDestination" />
<property name="messageListener" ref="myTopicConsumer" />
</bean>
(生产环境)在tomcat 的conf文件夹下catalina.properties文件中添加 jms.topic.clientId=\clientId_001\
Eclipse中只需在service中Open launch configuration--->VM arguments中添加Djms.topic.clientId="clientId_001"
针对java项目,在window-->java-->Installed JREs 中选择当前jdk,双击或者edit,然后在Default VM arguments:中加入-Djms.topic.clientId="clientId_001"