陈老老老板🦸 👨💻本文专栏:SpringBoot篇(主要讲一些与springboot整合相关的内容)👨💻本文简述:本文讲一下SpringBoot整合ActiveMQ的整合教程,特别详细。
👨💻上一篇文章: 《SpringBoot篇》24.SpringBoot整合Freemarker超详细教程
👨💻有任何问题,都可以私聊我,在文章最后也可以加我的vx。感谢支持!
🦹我认为人人都可以学好编程,我愿意成为你的领路人!

在先学习整合之前先了解一下ActiaveMQ,ActiveMQ是早期MQ产品之一,是使用JAVA语言编写。大部分现在的项目可能已经不使用,但是公司中的产品咱也说不准,所以还是要学习一下的。简单来说就是用作服务间的通信。以下是官方解释:
Apache ActiveMQ是最流行的开源、多协议、基于Java的消息代理。它支持行业标准协议,因此用户可以在广泛的语言和平台上获得客户端选择的好处。从用JavaScript、C、C++、Python、.Net等编写的客户端连接。使用无处不在的AMQP协议集成多平台应用程序。通过websockets使用STOMP在web应用程序之间交换消息。ActiveMQ提供了支持任何消息传递用例的功能和灵活性。
(1).不想麻烦直接去我网盘下载,这是5.16.5的版本,适配与jdk1.8.这里要注意每个版本适配的jdk版本可能不一样。网盘链接:ActiveMQ压缩包,提取码CLLB。
(2).去官网下载,官网地址:ActiveMQ官网,点击下载5.16.5版本适配jdk1.8。

(1)直接进行解压就能使用。
(2)点击进入bin,win64,activemq.bat就能就行使用了。

分析日志错误:运行发现报错,通过日志可以看出是端口被占用。

解决问题:首先应该想到查看是什么服务占用了5672端口,打开命令窗口,
如果想查看PID输入tasklist|findstr “5672”
如果想查看所有有关“5672”的服务可以输入netstat -aon|findstr “5672”

将进程杀死就ok了,输入taskkill -f -pid 7816 。在重新启动。

再次打开avtivemq,在浏览器网址栏输入
http://127.0.0.1:8161/
会进入activemq的可视化界面,用户名密码都是admin

点击manage进入控制台:

点击Queues查看使用到的队列:

运行环境:


org.springframework.boot spring-boot-starter-activemq

spring:
activemq:
broker-url: tcp://localhost:61616

实现接口MessageService
public interface MessageService {
void sendMessage(String message);
String doMessage();
}
实现类MessageServiceImpl
@Service
public class MessageServiceImpl implements MessageService{
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Override
public void sendMessage(String message) {
System.out.println("等待发送的信息为:" + message);
jmsMessagingTemplate.convertAndSend("order.queue.message",message);
}
@Override
public String doMessage() {
String message = jmsMessagingTemplate.receiveAndConvert("order.queue.message",String.class);
System.out.println("已经接收到信息:" + message);
return message;
}
}
@Component
public class MessageListener {
@JmsListener(destination = "order.queue.message")
private void receive(String message){
System.out.println("自动接收到消息:"+ message);
}
}
@SpringBootTest
class ActivemqApplicationTests {
@Autowired
private MessageService messageService;
@Test
void sendmessage() {
String message = "陈老老老板";
messageService.sendMessage(message);
}
//这个是手动消费,如果使用了监听器就会自动消费
@Test
void domessage() {
messageService.doMessage();
}
}
成功效果:
没有监听器:

使用监听器:

在可视化中也可以看到消息的生产与消费

说明:扩展监听器功能,@SendTo将消息处理完继续发送继续处理
@Component
public class MessageListener {
@JmsListener(destination = "order.queue.message")
@SendTo("other.queue")
private String receive(String message){
System.out.println("自动接收到order.queue.message消息:"+ message);
// 注意是将此方法的返回值返回到 新的队列中
return message;
}
@JmsListener(destination = "other.queue")
private void receiveOther(String message){
System.out.println("接收到other.queue继续发送的消息:" + message);
}
}
成功演示:


总结:SpringBoot整合ActiveMQ超详细教程。希望对您有帮助,感谢阅读
结束语:裸体一旦成为艺术,便是最圣洁的。道德一旦沦为虚伪,便是最下流的。
勇敢去做你认为正确的事,不要被世俗的流言蜚语所困扰。