ActiveMQ与Spring集成
1. ActiveMQ发送和接收消息
生产者示例:
|
|
消费者示例:
|
|
2. 与Spring整合
pom.xml 配置:
# pom.xml
|
|
Spring提供了一个方便的JmsTemplate来屏蔽发送消息时的JMS细节,但是JmsTemplate在发送每条消息时,都会创建一个新的Connection,Session,MessageProducer实例,当消息发送出去之后再关闭它们。这样效率非常低下。PooledConnectionFactory支持Connection,Session,MessageProducer实例的池化,使得Connection,Session,MessageProducer实例在使用完之后可以返回池中,以便以后可以重复使用它们。使用PooledConnectionFactory,需要添加activemq-pool
依赖包的支持。
生产者配置:
# spring-activemq-producer.xml
|
|
# activemq.properties
|
|
故障转移配置语法:
|
|
或者:
|
|
如果某台消息服务器宕机等异常情况导致uri1地址失效,ActiveMQ的故障转移机制会从配置的地址列表中选取另外一个地址进行重连。需要注意的是,ActiveMQ并不是按照配置的地址列表来选取地址的,而是随机进行选取的。如果想要关闭随机选取的机制,可以添加randomize=false
参数。想要了解更多的配置信息可以链接到官网查阅 failover-transport-reference。
Spring 配置:
# spring-context.xml
|
|
消息生产者:
# MessageProducer.java
|
|
Junit单元测试:
# TestMessageProducer.java
|
|
消费者配置:
# spring-activemq-consumer.xml
|
|
|
# activemq.properties
|
|
Spring 配置:
# spring-context.xml
|
|
消息消费监听器:
# MqQueue1MessageConsumerListener.java
|
|
# MqQueue2MessageConsumerListener.java
|
|
测试示例:
|
|
3. 基于注解方式的消费者
# spring-activemq-consumer.xml
|
|
消息消费监听器:
# MessageConsumerListener.java
|
|
示例项目开发环境:Java-8、Maven-3、IntelliJ IDEA-2017、Spring-4.7、ActiveMQ-5.15.2
完整示例项目链接:activemq-samples