SpringBoot整合ActiveMQ[超详细版]

这篇具有很好参考价值的文章主要介绍了SpringBoot整合ActiveMQ[超详细版]。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

简介

什么是ActiveMQ

JMS的概念

linux中安装并运行ActiveMQ

进入activemq管理页面

SpringBoot整合ActiveMQ-队列模式

 生产者

pom依赖

配置yml 

 启动类

 配置通道

测试发送信息进入通道

接受者

pom依赖

yml配置

启动类

接受mq类

SpringBoot整合ActiveMQ-主题模式

 生产者

创建主题通道

 测试发信息进入主题

接受者

 yaml

 接收类


简介

什么是ActiveMQ

消息队列(Message Queue)是一种进程间或者线程间的异步通信方式。使用消息队列,消息生产者会将消息保存在消息队列中,知道消息消费者来取走它。实现服务的解耦合,并提高系统的可靠性和扩展性。
目前常用的开源消息队列有很多,RabbitMQ、ActiveMQ、Redis、Kafka等,也就是常说的消息中间件。
本篇文章以Apache ActiveMQ为例,实战整合ActiveMQ的队列模式和广播模式两种以及兼容两种的实战。
 

JMS的概念

JMS

JMS即Java消息服务应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数中间件提供商都对JMS提供支持。JMS与ActiveMQ的关系类似于JDBC与JDBC驱动的关系。。

JMS包括两种消息模型:点对点、发布者/订阅者;
点对点式: – 消息发送者发送消息,消息代理将其放入一个队列中,消息接收者从队列中获取消息内容, 消息读取后被移出队列 – 消息只有唯一的发送者和接受者,但并不是说只能有一个接收者
发布订阅式: – 发送者(发布者)发送消息到主题,多个接收者(订阅者)监听(订阅)这个主题,那么 就会在消息到达时同时收到消息

 JMS是定义了统一的接口,来对消息操作进行统一;
JMS限定了必须使用Java语言;
JMS规定了两种消息模型;而AMQP的消息模型更加丰富。

linux中安装并运行ActiveMQ

链接:https://pan.baidu.com/s/1tZSs6iefzKVLHSwxihQ3Nw?pwd=1234 
提取码:1234

//复制到虚拟机,解压出来
tar -zxvf apache-activemq-5.14.5-bin.tar.gz

//解压完成之后,进入文件/bin目录下
cd apache-activemq-5.14.5/bin
//启动activemq
 ./activemq start

 启动成功springboot整合activemq,Java,java-activemq,spring boot,activemq

注意:

        关闭防火墙

进入activemq管理页面

http://自己的IP地址:8161/ 即可进入ActiveMQ管理页面 

springboot整合activemq,Java,java-activemq,spring boot,activemq

输入账号密码均为:admin  

springboot整合activemq,Java,java-activemq,spring boot,activemq

springboot整合activemq,Java,java-activemq,spring boot,activemq 

 

SpringBoot整合ActiveMQ-队列模式

springboot版本:2.3.4.RELEASE

注意:

队列模式:

        队列模式可以理解为先进先出模式,生产者发布完消息后存入队列中一直等监听者接收。监听者上线就会收到队列中的信息!但是只要收到,那么队列中的信息就会消失。 

 生产者

pom依赖

   <!-- ActiveMQ -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

配置yml 

spring:
 
  activemq:
    broker-url: tcp://自己的activemq服务器ip:61616
    packages:
      #配置信任所有的包,这个配置为了支持发送对象消息
      trust-all: true
    user: admin
    password: admin

 启动类

@SpringBootApplication
@EnableJms #开启JMS
public class SpringBootThree {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootThree.class,args);
    }
}

 配置通道


/**
 * 专门配置mq通道的配置类
 */
@Configuration
public class QueueConfig {


    @Bean(name = "queueName")
    Queue queueName(){

        return  new ActiveMQQueue("test_queue");
    }


}

测试发送信息进入通道

@SpringBootTest
public class RedisTest {

  
  @Autowired
    JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
    Queue queueName;
    @Test
    public void test5(){

            String message="我是发送消息的人,听得到吗";
            jmsMessagingTemplate.convertAndSend(queueName, message);

    }

}

接受者

pom依赖

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

yml配置

server:
  port: 10006


spring:

  activemq:
    broker-url: tcp://自己的activemq服务器的ip:61616
    packages:
      #配置信任所有的包,这个配置为了支持发送对象消息
      trust-all: true
    user: admin
    password: admin
  

启动类

@SpringBootApplication
public class ConsumerMain10006 {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerMain10006.class,args);
    }
}

接受mq类

/**
 * 用于监听MQ
 */
@Component
public class MQConfig {




    @JmsListener(destination = "test_queue")
    public  void  onMessage(String message){

           
        System.out.print(message)
        //获取到消息后可以干一些事情
      


    }
}

SpringBoot整合ActiveMQ-主题模式

注意:

      主题模式与队列模式的区别:

                1、主题模式发布的消息,可以分发给所有订阅者

               2、主题模式为发布订阅模式,只有订阅者(监听的类)在线时,才能接受到消息,如果中途连接进来,之前的消息是接收不到的,只能接收之后的信息!

               

 生产者

生产者的pom、yml、启动类和队列模式一样

创建主题通道



/**
 * 专门配置mq通道的配置类
 */
@Configuration
public class QueueConfig {


    @Bean(name = "queueName")
    Queue queueName(){

        return  new ActiveMQQueue("test_queue");
    }

//主题(发布\订阅模式)通道
   @Bean(name="queueFind")
    Topic queueFind(){
        return new ActiveMQTopic("cctv");
    }


}

 测试发信息进入主题

@SpringBootTest
public class RedisTest {

  
  @Autowired
    JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
    Queue queueName;

@Autowired
Topic  queueFind;

    @Test
    public void test5(){

            String message="我是发送消息的人,你接受我就没了";
            jmsMessagingTemplate.convertAndSend(queueName, message);

    }

 @Test
    public void test6(){

            String message="我是主题可以发布所有监听我的人,但是我发布你必须在线";
            jmsMessagingTemplate.convertAndSend(queueFind, message);

    }

}

接受者

pom与启动类队列一样   文章来源地址https://www.toymoban.com/news/detail-792397.html

 yaml

spring:

  activemq:
    broker-url: tcp://自己acvtvemq服务器的ip:61616
    packages:
      #配置信任所有的包,这个配置为了支持发送对象消息
      trust-all: true
    user: admin
    password: admin
   
#开启主题策略,默认是关闭 开启主题模式
  jms:
    pub-sub-domain: true

 接收类

/**
 * 用于监听MQ
 */
@Component
public class MQConfig {




    @JmsListener(destination = "test_queue")
    public  void  onMessage(String message){

           
        System.out.print(message)
        //获取到消息后可以干一些事情
      

    }


    
    @JmsListener(destination = "cctv")
    public  void  cctv(String message){

           
        System.out.print(message)
        //获取到消息后可以干一些事情
      

    }
}

到了这里,关于SpringBoot整合ActiveMQ[超详细版]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用ActiveMQ详细讲解

    ActiveMQ 是一款流行的消息中间件,支持多种通信协议和消息模式,包括点对点、发布/订阅、事务处理等。下面是使用 ActiveMQ 的基本步骤: 1. 下载和安装 ActiveMQ: 2. 启动 ActiveMQ 服务器: 3. 访问 ActiveMQ 的 Web 控制台: 4. 创建队列或主题: 5. 发送消息: 6. 接收消息: 以上是使

    2024年01月17日
    浏览(41)
  • ActiveMQ详细入门教程系列

    两个系统或两个客户端之间进行消息传送,利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。 消息中间件,总结起来作用有三个: 异步化提升性

    2024年02月15日
    浏览(45)
  • 五、ActiveMQ的Broker(嵌入到java程序)

    Broker相当于一个ActiveMQ服务器实例 实现了用代码的形式启动ActiveMQ将MQ嵌入到Java代码中,以便随时用随时启动,在用的时候再去启动这样能节省了资源,也保证了可用性。 用ActiveMQ Broker作为独立的消息服务器来构建Java应用。ActiveMQ也支持在vm中通信基于嵌入的broker,能够无缝

    2024年02月19日
    浏览(40)
  • Java中如何使用消息队列实现异步(ActiveMQ,RabbitMQ,Kafka)

    在 Java 中,可以使用消息队列实现异步处理。下面是一个简单的示例代码,用于说明如何使用 ActiveMQ 实现消息队列异步处理: 添加 ActiveMQ 依赖 在 pom.xml 文件中添加以下依赖: 创建消息队列 创建一个名为 “TestQueue” 的消息队列,并配置 ActiveMQ 连接信息: 创建消息消费者

    2024年02月16日
    浏览(55)
  • 性能测试工具 Jmeter 测试 JMS (Java Message Service)/ActiveMQ 性能

    目录 前言 ActiveMQ 介绍 准备工作 编写jndi.properties添加到ApacheJMeter.jar 中 下载 ActiveMQ 配置 Jmeter 进行测试 点对点 (Queues 队列)

    2024年02月15日
    浏览(54)
  • ActiveMq学习⑦__ActiveMq协议

    问题一、默认的61616端口如何更改? 问题二、你生产上的链接协议如何配置的?使用tcp吗? ActiveMQ 支持的client-broker 通讯协议有:TVP、NIO、UDP、SSL、Http(s)、VM。 其中配置TransportConnector 的文件在ActiveMQ 安装目录的conf/activemq.xml 中的标签之内。 activemq 传输协议的官方文档:htt

    2024年02月05日
    浏览(40)
  • docker-compose安装和使用(自启、redis、mysql、rabbitmq、activemq、es、nginx、java应用)

    1.在线安装docker-compose: 参考官网:https://docs.docker.com/compose/install/other/ docker-compose安装及简单入门 [Docker] docker-compose使用教程 Docker系列教程22-docker-compose.yml常用命令 2、离线安装docker-compose: 参考:Docker - 离线安装 docker-compose(以CentOS系统为例) (1)首先访问 docker-compose 的

    2024年02月05日
    浏览(53)
  • ActiveMq学习⑨__基于zookeeper和LevelDB搭建ActiveMQ集群

    引入消息中间件后如何保证其高可用? 基于zookeeper和LevelDB搭建ActiveMQ集群。集群仅 提供主备方式的高可用集群功能,避免单点故障 。 http://activemq.apache.org/masterslave LevelDB,5.6版本之后推出了LecelDB的持久化引擎,它使用了自定义的索引代替常用的BTree索引,其持久化性能高于

    2024年02月05日
    浏览(54)
  • 记录一次老服务器启动ActiveMq时报的Could not create the Java Virtual Machine.错误

    服务器系统CentOS7  1、出现ActiveMq服务无法连接 2、查看activemq状态 service activemq status 显示activemq not running 3、找到ActiveMq的bin目录,# 后台启动 ./activemq console 提示Could not create the Java Virtual Machine.错误 可以判断是java运行环境的问题 4、再看看java版本 java -version 5、再看看activemq版

    2024年04月22日
    浏览(59)
  • 《SpringBoot篇》18.SpringBoot整合Memcached缓存超详细教程

    陈老老老板 说明:工作了,学习一些新的技术栈和工作中遇到的问题,边学习边总结,各位一起加油。需要注意的地方都标红了,还有资源的分享. 一起加油。 本文是介绍Memcached与SpringBoot整合 整合之前先大致了解一下Memcached,是一个​ 免费开源的、高性能的、具有分布式内

    2024年02月03日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包