SpringBoot整合ActiveMQ
文章目录
- SpringBoot整合ActiveMQ
- 下载与安装
- SpringBoot整合ActiveMQ
- 导坐标
- 改配置,默认的保存位置
- 生产与消费消息
- 实现监听类——实现消息自动消费
- 监听器转发消息:流程性业务消息消费完转入下一个消息队列
下载与安装
https://activemq.apache.org/activemq-5016003-release
下载后解压即可
SpringBoot整合ActiveMQ
导坐标
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-activemq</artifactId></dependency>
改配置,默认的保存位置
spring:activemq:broker-url: tcp://localhost:61616jms:template:default-destination: itheima
生产与消费消息
@Service
public class MessageServiceActivemqImpl implements MessageService {@Autowiredprivate JmsMessagingTemplate messagingTemplate;@Overridepublic void sendMessage(String id) {System.out.println("待发送短信的订单已经纳入队列:id=" + id);messagingTemplate.convertAndSend("order.queue.id",id);// 发消息的时候设定存储位置}@Overridepublic String doMessage() {String id = messagingTemplate.receiveAndConvert("order.queue.id",String.class);System.out.println("已完成短信发送业务,id:"+id);return id;}
}
消息怎么会手工点击消费呢,哈哈哈,肯定是收到消息赶紧处理,必须交给机器处理啦!
实现监听类——实现消息自动消费
@Component
public class MessageListener {@JmsListener(destination = "order.queue.id")public void reveive(String id){System.out.println("已完成短信发送业务,id:"+id);}
}
监听器收到消息后,不仅可以消费消息,还可以将当前方法的返回值,在转发给下一个消息队列。
所以改造一下我们的监听器
监听器转发消息:流程性业务消息消费完转入下一个消息队列
@Component
public class MessageListener {@JmsListener(destination = "order.queue.id")@SendTo("order.other.queue.id")public String reveive(String id){System.out.println("已完成短信发送业务,id:"+id);return "new:" + id;}
}
jms的消息模型有两种
- 点对点
- 发布订阅
目前使用的是点对点的模型,要想更换,做一个配置pub-sub-domain: true
server:port: 80spring:activemq:broker-url: tcp://localhost:61616jms:template:default-destination: itheimapub-sub-domain: true