SpringBoot整合ActiveMQ实现消息队列
首先我们要安装ActiveMQ
可以在官网下载https://activemq.apache.org/components/classic/download/
同时可以通过网盘下载
链接:https://pan.baidu.com/s/1podU4dQMau2x927OqsQsIg
提取码:0011
里面有很多mq的技术比如Active,RabbitMQ,Kafka
下载完成安装后我们我们要做的事情就是启动ActiveMQ的服务
在bin目录下找到你电脑是多少位的双击activemq.bat就可以启动
这里我们可以看到我们已经启动成功
它会给你一个访问服务器的地址去访问服务
这里他要我们登录一下
账号和密码都是admin
这个时候我们就成功访问到了active服务器
这个服务器是做什么的呢,这个等我们整合完后你就会明白
好了到这里我们的ActiveMQ安装就已经完成了
下面我们就来做springboot整合
还是老套路
1.导入 ActiveMQ的坐标
org.springframework.boot spring-boot-starter-activemq
这样我们第一步就完成了
2.然后就是配置。告诉springboot你现在要用ActiveMQ这个消息队列技术
spring: activemq: broker-url: tcp://localhost:61616 jms: template: default-destination: hb
下面那个是你的消息队列放入的位置随便取一个名称
3.下面就是实现api了
首先在业务中注入一个api用来操作消息的存入队列和处理消息
@Servicepublic class AcitiveMqImpl implements MessageService {@Autowiredprivate JmsMessagingTemplate jmsMessagingTemplate; @Override public void sendMessagemq(String id) { System.out.println("消息已经被放入消息队列 id:"+id); jmsMessagingTemplate.convertAndSend(id);//可以指定消息放在队列中的位置 } @Override public String doMessage() { //接受消息处理 String id = jmsMessagingTemplate.receiveAndConvert(String.class); System.out.println("消息已经被处理id"+id); return id; }}
对于 jmsMessagingTemplate.convertAndSend();这个方法是先转换成它能够接受的类型,再发送到消息队列中去。同时这个方法也可以再配置一个参数,指定这个消息发送到哪个队列。这和我们刚刚在配置中写的一样
jms: template: default-destination: hb
下面处理消息的方法
jmsMessagingTemplate.receiveAndConvert(String.class);
这个方法作用是先接受再将消息转换成你需要的类型。这里的转换类型需要你去自己指定
好了我们业务层的代码已经写好了
我们再写一个Controller层
可以到对它进行测试
@RequestMapping("msgs")@RestControllerpublic class sendMQ { @Autowired private OrderServiceImpl orderService; @PostMapping("{id}") void sendMessage(@PathVariable String id){ orderService.order(id); }}
注意我在这里又写了一个业务层,通过这个业务层去调用发送消息到队列这个方法
@Servicepublic class OrderServiceImpl implements orderService{ @Autowired private AcitiveMqImpl acitiveMq; @Override public void order(String id) { //处理消息进行一个模拟 System.out.println("订单处理开始");//这一步对消息进行处理 再创建一个业务专门对业务进行处理 acitiveMq.sendMessagemq(id); System.out.println("订单处理结束"); }}
这个就是对于消息的处理了
@RequestMapping("dos")@RestControllerpublic class doMessage {@Autowiredprivate DealMessageImpl dealMessage;*/ @Autowired private AcitiveMqImpl acitiveMq; @GetMapping String domessage(){ String id = acitiveMq.doMessage(); return id; }}
好了到这里我们对于ActiveMQ的安装,和springbooot整合ActiveMQ已经完成了
其实很简单spring整合第三方技术很方便