添加springboot-ActiveMQ依赖
<!--spring-boot的activeMQ依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
添加属性配置
#activeMQ部署地址
spring.activemq.broker-url=tcp://127.0.0.1:61616
#activeMQ访问用户名
spring.activemq.user=admin
#activeMQ访问密码
spring.activemq.password=admin
创建Destination消息地点
/**
* 发布/订阅的模型
* @return
*/
@Bean
public Destination generateOrderDestination(){
return new ActiveMQTopic(ConstantUtil.SHOP_GENERATEORDER_TOPIC);
}
/**
* 点对点的模型
* @return
*/
@Bean
public Destination generateOrderDestinationQueue(){
return new ActiveMQQueue(ConstantUtil.SHOP_GENERATEORDER_QUEUE);
}
创建模型的监听容器
/**
* 用于监听Topic模型消息的容器bean
* @param connectionFactory
* @return
*/
@Bean
public JmsListenerContainerFactory<?> jmsListenerContainerTopic(ActiveMQConnectionFactory connectionFactory) {
DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();
//是否使用订阅和发布的模型监听器,默认为false,也就是说默认使用的是点对点的模型监听器
bean.setPubSubDomain(true);
bean.setConnectionFactory(connectionFactory);
return bean;
}
/**
* 用于监听Queue模型消息的容器bean
* @param connectionFactory
* @return
*/
@Bean
public JmsListenerContainerFactory<?> jmsListenerContainerQueue(ActiveMQConnectionFactory connectionFactory) {
DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();
bean.setConnectionFactory(connectionFactory);
return bean;
}
消息生产者
注入JmsTemplate和Destination
调用
jmsTemplate.convertAndSend(destination,content);
消息消费者
//在具体的消息处理的方法上贴上注解:
//destination是指要监听那个地点的消息,而通过containerFactory可以指定监听的是哪种模型
@JmsListener(destination = ConstantUtil.SHOP_GENERATEORDER_TOPIC,containerFactory="jmsListenerContainerTopic")
public void receiveGenerateOrder(String content) throws JMSException {
System.out.println(content);
}