依赖
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
</dependency>
生产
new.mq.address=tcp://mcs-master.mq.tuniu.org:61616,tcp://mcs-slave.mq.tuniu.org:61616
<bean id="newCommonFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="failover://(${new.mq.address})?randomize=false&jms.useAsyncSend=true&jms.prefetchPolicy.queuePrefetch=1"/>
</bean>
<bean id="jmsSearchFactorySender" class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="targetConnectionFactory" ref="newCommonFactory"/>
<property name="sessionCacheSize" value="10"/>
</bean>
prd.boss3.search.push = queue.boss3.category.update
<bean id="searchPrdDestination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="${prd.boss3.search.push}"/>
</bean>
<bean id="queueSearchTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jmsSearchFactorySender"></property>
<property name="defaultDestinationName" value="subject"></property>
<property name="deliveryPersistent" value="true"></property>
<property name="pubSubDomain" value="false"></property>
<!-- false p2p,true topic -->
<property name="sessionAcknowledgeMode" value="1"></property>
<property name="explicitQosEnabled" value="true"></property>
<property name="timeToLive" value="604800000"></property>
</bean>
this.queueSearchTemplate.send(searchPrdDestination, new MessageCreator()
{
public Message createMessage(Session session)
{
Message msg = null;
try
{
msg = session.createTextMessage(message);
MQLogUtil.producerLog(message);
}
catch (JMSException e)
{
LOG.error("===>> Boss3 err send JMS.", e);
}
return msg;
}
});
消费
<bean id="newCommonFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="failover://(${new.mq.address})?randomize=false&jms.useAsyncSend=true&jms.prefetchPolicy.queuePrefetch=1"/>
</bean>
<bean id="jmsResChangeToProductConsumer" class="org.apache.activemq.pool.PooledConnectionFactory">
<property name="connectionFactory" ref="newCommonFactory" />
</bean>
res.change.update = queue.res.tourInfo.change
<jms:listener-container connection-factory="jmsResChangeToProductConsumer" destination-type="queue">
<jms:listener destination="${res.change.update}" ref="ResChangeToProductConsumer" method="onMessage" />
</jms:listener-container>
<bean id="ResChangeToProductConsumer" class="com.tuniu.mcs.product.mq.listener.Boss3MQResChangeToProductConsumer"></bean>
public class Boss3MQResChangeToProductConsumer implements MessageListener {
@Override
public void onMessage(Message message){
}
}