1.pom.xml依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
</dependency>
2.配置文件
8161是activemq的管理页面,默认的账号密码都是admin 61616是程序连接activemq的通讯地址
spring:
activemq:
user: admin
password: admin
broker-url: tcp://localhost:61616
pool:
enabled: false
packages:
trust-all: true
3生产者
package cn.stylefeng.guns.modular.activeMQ.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Service;
import javax.jms.Destination;
/**
* 生产者
*/
@Service("producer")
public class JMSProducer {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
public void sendMessage(Destination destination, final String msg){
jmsMessagingTemplate.convertAndSend(destination,msg);
}
@JmsListener(destination = "out.queue")
public void consumerMessage(String text){
System.out.println("从out.queue队列收到回复为:"+text);
}
}
4.消费者
消费者1
package cn.stylefeng.guns.modular.activeMQ.controller;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
import javax.jms.JMSException;
import javax.jms.Session;
import javax.jms.TextMessage;
@Component
public class JMSConsumerOne {
@JmsListener(destination = "mytest.queue")
public void reveiveQueue(TextMessage msg, Session session){
try {
System.out.println("test-queue 消息:" + msg.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
消费者2
package cn.stylefeng.guns.modular.activeMQ.controller;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Component;
@Component
public class JMSConsumerTwo {
@JmsListener(destination = "mytest.queue")
@SendTo("out.queue")//发送到out.queue队列,消息回馈
public String receiveQueue(String text){
System.out.println("Consumer2收到信息为:" + text);
return "return message-" + text;
}
}
5.测试类
package cn.stylefeng.guns.modular.activeMQ.controller;
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.jms.Destination;
@RestController
@RequestMapping("test")
public class TestController {
@Autowired
private JMSProducer producer;
@GetMapping("queue")
public String queueSend(){
Destination destination = new ActiveMQQueue("mytest.queue");
for (int i = 0; i < 5; i++) {
producer.sendMessage(destination,"this is a queue test");
}
return "ok";
}
}