目录
本文仅针对同时支持topic和queue做的demo
配置active mq
ActiveMqConfig
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.config.JmsListenerContainerFactory;
import org.springframework.jms.core.JmsMessagingTemplate;
import javax.jms.Queue;
import javax.jms.Topic;
/**
* @author
* @Date: 2019/11/26 13:25
* @Description:
*/import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.config.JmsListenerContainerFactory;
import org.springframework.jms.core.JmsMessagingTemplate;
import javax.jms.Queue;
import javax.jms.Topic;
/**
* @author
* @Date: 2019/11/26 13:25
* @Description:
*/
@Configuration
public class ActiveMqConfig {
@Bean
public Queue queue(){
return new ActiveMQQueue("my_queue");
}
@Bean
public Topic topic(){
return new ActiveMQTopic("test_topic");
}
@Bean
public ActiveMQConnectionFactory connectionFactory() {
return new ActiveMQConnectionFactory("admin", "admin", "tcp://localhost:61616");
}
@Bean
public JmsListenerContainerFactory<?> jmsListenerContainerTopic(ActiveMQConnectionFactory connectionFactory) {
DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();
bean.setPubSubDomain(true);
bean.setConnectionFactory(connectionFactory);
return bean;
}
@Bean
public JmsListenerContainerFactory<?> jmsListenerContainerQueue(ActiveMQConnectionFactory connectionFactory) {
DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();
bean.setConnectionFactory(connectionFactory);
return bean;
}
@Bean
public JmsMessagingTemplate jmsMessagingTemplate(ActiveMQConnectionFactory connectionFactory){
return new JmsMessagingTemplate(connectionFactory);
}
}
消息生产:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.jms.*;
/**
* @author
* @Date: 2019/11/22 17:59
* @Description:
*/
@RestController
@RequestMapping("/api")
@EnableScheduling
public class ActiveMqClientController {
@Autowired
private JmsTemplate jmsTemplate;
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
private Queue queue;
@Autowired
private Topic topic;
@RequestMapping("/send_topic")
public void sendTopic(){
this.jmsMessagingTemplate.convertAndSend(this.topic,"hi,activeMQ( topic )");
}
@RequestMapping("/send_queue")
public void sendQueue(){
this.jmsMessagingTemplate.convertAndSend(this.queue,"hi.activeMQ( queue )");
}
}
消息消费:
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
/**
* @author
* @Date: 2019/11/22 18:01
* @Description:
*/
@Component
public class ActiveMqServer {
@JmsListener(destination = "test_topic",containerFactory="jmsListenerContainerTopic")
public void receiveTopic(String message) {
System.out.println("监听topic=============监听topic");
System.out.println(message);
}import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
/**
* @author
* @Date: 2019/11/22 18:01
* @Description:
*/
@Component
public class ActiveMqServer {
@JmsListener(destination = "test_topic",containerFactory="jmsListenerContainerTopic")
public void receiveTopic(String message) {
System.out.println("监听topic=============监听topic");
System.out.println(message);
}
@JmsListener(destination = "my_queue",containerFactory="jmsListenerContainerQueue")
public void receiveQueue(String message) {
System.out.println("监听queue=============监听queue");
System.out.println(message);
}
@JmsListener(destination = "test_topic",containerFactory="jmsListenerContainerTopic")
public void receiveTopic1(String message) {
System.out.println("监听topic=======11111======监听topic");
System.out.println(message);
}
@JmsListener(destination = "my_queue",containerFactory="jmsListenerContainerQueue")
public void receiveQueue1(String message) {
System.out.println("监听queue=======11111======监听queue");
System.out.println(message);
}
}
效果:http://localhost:8090/api/send_topic
http://localhost:8090/api/send_queue
其他安装简单介绍等看另一篇文章 spring boot + active mq 简单使用示例