POOM文件
首先导入activemq所需的jar包
<dependencies>
<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>
</dependencies>
生产者
application.yml
server:
port: 8090
servlet:
context-path: /activemqProducer
spring:
activemq:
broker-url: tcp://127.0.0.1:61616
user: 123
password: 123
ActiveMqConfig
package com.example.activemqtest.config;
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 javax.jms.Queue;
import javax.jms.Topic;
@Configuration
public class ActiveMQConfig {
@Bean
public Queue queue(){
return new ActiveMQQueue("queue2");
}
@Bean
public Topic topic(){
return new ActiveMQTopic("topic2");
}
}
配置生产者要发送消息的队列或者主题,注入spring中
ProducterController
package com.example.activemqtest.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.jms.Queue;
import javax.jms.Topic;
@RestController
public class ProducterController {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
private Queue queue;
@Autowired
private Topic topic;
@GetMapping("/sendMsgByQueue")
public String sendMsgByQueue(String msg){
jmsMessagingTemplate.convertAndSend(queue,msg);
return msg;
}
@GetMapping("/sendMsgByTopic")
public String sendMsgByTopic(String msg){
jmsMessagingTemplate.convertAndSend(topic,msg);
return msg;
}
}
消费者
@JmsListener(destination = "queue2")
//方法返回发送给queue3
@SendTo("queue3")
public String handleMessage(String msg){
System.out.println("接收到的返回是:" + msg);
return "返回:"+ msg;
}
以上是消费者接收队列queue2的方式
若要接收topic,需要增加配置
server:
port: 8091
servlet:
context-path: /activemqConsumer
spring:
activemq:
broker-url: tcp://127.0.0.1:61616
user: 123
password: 123
jms:
pub-sub-domain: true
@JmsListener(destination = "topic2")
public void topicConsumer1(String msg){
System.out.println("消费者1接收为:"+msg);
}
@JmsListener(destination = "topic2")
public void topicConsumer2(String msg){
System.out.println("消费者2接收为:"+msg);
}