《SpringBoot篇》25.SpringBoot整合ActiveMQ超详细教程_springboot中如何使用activemq

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
陈老老老板🦸
👨‍💻本文专栏SpringBoot篇主要讲一些与springboot整合相关的内容
👨‍💻本文简述本文讲一下SpringBoot整合ActiveMQ的整合教程特别详细。
👨‍💻上一篇文章 《SpringBoot篇》22.EasyExcel常用API与注解
👨‍💻有任何问题都可以私聊我我能帮得上的一定帮忙感谢大佬们支持。
🦹如果喜欢可以投个票吗在文章最后感谢感谢

在这里插入图片描述

一、ActiveMQ简介

1.简介

在先学习整合之前先了解一下ActiaveMQActiveMQ是早期MQ产品之一是使用JAVA语言编写。大部分现在的项目可能已经不使用但是公司中的产品咱也说不准所以还是要学习一下的。简单来说就是用作服务间的通信。以下是官方解释
Apache ActiveMQ是最流行的开源、多协议、基于Java的消息代理。它支持行业标准协议因此用户可以在广泛的语言和平台上获得客户端选择的好处。从用JavaScript、C、C++、Python、.Net等编写的客户端连接。使用无处不在的AMQP协议集成多平台应用程序。通过websockets使用STOMP在web应用程序之间交换消息。ActiveMQ提供了支持任何消息传递用例的功能和灵活性。

2.作用

    1. 降低服务之间代码耦合按功能将一个整体的项目进行分割成多个系统比如将报告系统、短信系统分割出来。
    1. 使用消息队列增加系统并发处理量这样并发量就可以变高了根据不同的消息通信机制选择合适的发送模式。

3.特性

    1. 实现松耦合ActiveMQ以异步的形式提供松耦合的应用架构也就是说生产者和消费者互不影响。
    1. 遵循JMS规范ActiveMQ的各种特性是JMS1.1规范的实现。JMS规范保证了同步和异步消息传递、一次和仅一次的传递、对于订阅者的消息持久化。
    1. 支持多种连接协议ActiveMQ提供了各种连接选择包括HTTP、HTTPS、SSL、TCP、UDP、XMPP、IP多点传送等。
    1. 提供多种客户端接口ActiveMQ对多种编程语言提供了API接口例如C/C++、java 、.NET、PHP、Python和Perl等版本。
    1. 支持多种应用服务器ActiveMQ与Java应用服务器很好地集成。
    1. 提供持久性ActiveMQ拥有多种持久性方案可供选择。
    1. 提供安全保障ActiveMQ可以按自己的需求定制安全等级既可以通过配置文件提供简单的验证和授权也可以实现标准的JAAS登录模块。
    1. 支持代理集群为了更好的扩展性多个ActiveMQ代理可以通过代理网络Network of Brokers进行联合的工作。
    1. 提供简单的管理ActiveMQ提供了各种简便而又强大的管理方式除了Java语言中最基本的JConsole还有ActiveMQ Web Console、消息报告和各种系统日志等。

二、ActiveMQ的下载与安装

1.下载

1.不想麻烦直接去我网盘下载这是5.16.5的版本适配与jdk1.8.这里要注意每个版本适配的jdk版本可能不一样。网盘链接ActiveMQ压缩包提取码CLLB。
2.去官网下载官网地址ActiveMQ官网点击下载5.16.5版本适配jdk1.8
在这里插入图片描述

2.安装

1直接进行解压就能使用。
2点击进入binwin64activemq.bat就能就行使用了。
在这里插入图片描述

3.错误

分析日志错误运行发现报错通过日志可以看出是端口被占用。
在这里插入图片描述
解决问题首先应该想到查看是什么服务占用了5672端口打开命令窗口
如果想查看PID输入tasklist|findstr “5672”
如果想查看所有有关“5672”的服务可以输入netstat -aon|findstr “5672”
在这里插入图片描述
将进程杀死就ok了输入taskkill -f -pid 7816 。在重新启动。
在这里插入图片描述

4.测试

再次打开avtivemq,在浏览器网址栏输入

http://127.0.0.1:8161/

会进入activemq的可视化界面用户名密码都是admin
在这里插入图片描述
点击manage进入控制台
在这里插入图片描述
点击Queues查看使用到的队列
在这里插入图片描述

三、SpringBoot整合ActiveMQ

1.创建项目

运行环境

  • springboot 2.7.6
  • lombok

在这里插入图片描述
在这里插入图片描述

2.添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

在这里插入图片描述

3.配置文件

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

在这里插入图片描述

4.实现类

实现接口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(message);
    }

    @Override
    public String doMessage() {
        String message = jmsMessagingTemplate.receiveAndConvert(String.class);
        System.out.println("已经接收到信息" + message);
        return message;
    }
}

5.使用监听器自动消费

@Component
public class MessageListener {

   @JmsListener(destination = "order.queue.message")
   private void receive(String message){
       System.out.println("自动接收到消息"+ message);
   }
}

6.测试类

@SpringBootTest
class ActivemqApplicationTests {

    @Autowired
    private MessageService messageService;

    @Test
    void sendmessage() {
        String message = "陈老老老板";
        messageService.sendMessage(message);
    }
	
	//这个是手动消费如果使用了监听器就会自动消费
	@Test
    void domessage() {
        messageService.doMessage();
    }
}

成功效果
没有监听器
在这里插入图片描述
使用监听器
在这里插入图片描述

在可视化中也可以看到消息的生产与消费
在这里插入图片描述

7.扩展知识

说明扩展监听器功能@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超详细教程。希望对您有帮助感谢阅读

结束语裸体一旦成为艺术便是最圣洁的。道德一旦沦为虚伪便是最下流的。
勇敢去做你认为正确的事不要被世俗的流言蜚语所困扰。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Spring