队列方式
1. 导入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- spring boot web支持:mvc,aop... --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency>
2. 创建生产者
2.1 创建application.yml配置文件
server: port: 8080 #activemq配置 spring: activemq: broker-url: tcp://127.0.0.1:61616 user: admin password: admin
2.2通过JMSTemplate模板发送消息
@Component public class ActiveMQProvider { //注入JMSTemplate模板 @Resource private JmsTemplate jmsTemplate; //创建方法 public void sendMessage(){ //点对点,创建队列 ActiveMQQueue queue=new ActiveMQQueue("boot_queue"); //发送消息 jmsTemplate.convertAndSend(queue,"生产者产生的消息~"); } }
2.3 创建客户端访问的方法
@RestController public class ProController { @Resource private ActiveMQProvider activeMQProvider; @RequestMapping("/sendMessage") public String sendMessage(){ activeMQProvider.sendMessage(); return "success"; } }
3. 创建消费者
3.1 创建application.yml配置文件
server: port: 8081 spring: activemq: broker-url: tcp://127.0.0.1:61616 user: admin password: admin
3.2 启动类添加监听
//消费者消费 @JmsListener(destination = "boot_queue") public void getMessage(TextMessage message) throws JMSException { System.out.println("消费者获取到消息:"+message.getText()); }
主题方式
1.生产者需要制定当前发送的主题,需要开启
@Component public class ActiveMQProvider { //注入JMSTemplate模板 @Resource private JmsTemplate jmsTemplate; //创建方法 public void sendMessage(){ //发布订阅:创建主题 ActiveMQTopic topic=new ActiveMQTopic("boot_topic"); //springboot默认是queue jmsTemplate.setPubSubDomain(true); //发送消息 jmsTemplate.convertAndSend(topic,"生产者产生主题的消息~"); } }
//springboot默认是queue
jmsTemplate.setPubSubDomain(true);
这一步也可以改为在配置文件添加,如下红字配置,都可以
server: port: 8080 #activemq配置 spring: activemq: broker-url: tcp://127.0.0.1:61616 user: admin password: admin jms: pub-sub-domain: true
2.消费者消费同样开启,在启动类添加如下配置
//springboot默认只配置queue类型消息,如果要使用topic类型的消息,则需要配置该bean @Bean public JmsListenerContainerFactory jmsTopicListenerContainerFactory(ConnectionFactory connectionFactory){ DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); //这里必须设置为true,false则表示是queue类型 factory.setPubSubDomain(true); return factory; } //消费者消费 destination队列或者主题的名字 @JmsListener(destination = "boot_topic",containerFactory = "jmsTopicListenerContainerFactory") public void getMessage(TextMessage message) throws JMSException { System.out.println("消费者获取到消息:"+message.getText()); }
3.配置文件中加入
jms: pub-sub-domain: true
原文:https://www.cnblogs.com/chx9832/p/12313645.html