Spring Boot整合ActiveMQ

spring boot整合JMS(ActiveMQ实现) 一、安装ActiveMQ 具体的安装步骤,请参考我的另一篇博文: http://blog.youkuaiyun.com/liuchuanhong1/article/details/52057711 二、新建spring boot工程,并加入JMS(ActiveMQ)依赖 三、工程结构 pom依赖如下: <project xmlns="http://maven.apache.org/POM 阅读详情

ActiveMQ

简介

ActiveMQ是Apache出品的,非常流行的消息中间件,可以说要掌握消息中间件,需要从ActiveMQ开始,要掌握更加强大的RocketMQ,也需要ActiveMQ的基础。
什么是消息中间件:
消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。
目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ。

安装使用

去官方网站官方网站:http://activemq.apache.org/ 下载相应的版本,解压安装简单方便。
在这里插入图片描述
在linux系统下,要将端口开放
在这里插入图片描述
验证:
打开浏览器,使用admin用户名和密码访问http://IP:8161/,看到下图即可证明安装成功。
在这里插入图片描述

Spring Boot整合ActiveMQ

源码地址

引入依赖

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

代码中引入了ActiveMQ的starter,和activemq-pool是方便使用连接池机制,可以在application.properties配置ActiveMQ。

配置application.properties

# ActiveMQ地址
spring.activemq.broker-url=tcp://192.168.1.105:61616
# 用户名和密码
spring.activemq.user=admin
spring.activemq.password=admin
# 是否使用发布订阅模式,默认是false
spring.jms.pub-sub-domain=true
# 默认目的地址
spring.jms.template.default-destination=myDestination
# 线程池配置
spring.activemq.pool.enabled=true
spring.activemq.pool.max-connections=50
# 为MQ添加所有包信任
spring.activemq.packages.trust-all=true

配置JMS连接

JmsConfig.java

@Configuration
public class JmsConfig {
    @Value(value = "${spring.activemq.broker-url}")
    private String url ;
    @Value(value = "${spring.jms.template.default-destination}")
    private  String defaultDestination;
    @Bean
    ConnectionFactory connectionFactory() {
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(url);
        //MQ要想支持序列化对象,需将setTrustAllPackages设置为true
        factory.setTrustAllPackages(true);
        return factory;
    }


    @Bean
    JmsTemplate jmsTemplate(ConnectionFactory connectionFactory) {
        JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory);
        jmsTemplate.setPriority(999);
        return jmsTemplate;
    }

    @Bean(value="jmsMessagingTemplate")
    JmsMessagingTemplate jmsMessagingTemplate(JmsTemplate jmsTemplate) {
        JmsMessagingTemplate messagingTemplate = new JmsMessagingTemplate(jmsTemplate);
        return messagingTemplate;
    }

    // 在Queue模式中,对消息的监听需要对containerFactory进行配置
    @Bean("queueListener")
    public JmsListenerContainerFactory<?> queueJmsListenerContainerFactory(ConnectionFactory connectionFactory){
        SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setPubSubDomain(false);
        return factory;
    }
}

定义MQ服务接口以及实现

ActivemqService .java

@Service
public interface ActivemqService {

    public void  sendMsg(String msg);
    public void receiveMsg(String msg);
}

ActivemqServiceImpl .java

@Service
public class ActivemqServiceImpl implements ActivemqService {

    @Autowired
    private JmsTemplate jmsTemplate = null;


    @Override
    public void sendMsg(String msg) {
        System.out.println("send message[" + msg + "]");
        jmsTemplate.convertAndSend("myDestination",msg);
    }

    @Override
    //使用注解监听发送过来的消息
    @JmsListener(destination = "${spring.jms.template.default-destination}",containerFactory = "queueListener")
    public void receiveMsg(String msg) {
        System.out.println("收到消息:" + msg + "]");

    }
}

上述例子发送的只是字符串消息,非常普通,且在真实项目中,发送对象往往是POJO,所以再定义一个POJO类User,来演示对象消息的收发:
User.java

public class User implements Serializable {

    private static final long serialVersionUID = 8081834232494242383L;
    private Long id;
    private String username;
    private String note = null;

    public User(Long id, String username, String note) {
        this.id = id;
        this.username = username;
        this.note = note;
    }
		//get set toString ....
}

ActivemqUserService .java

@Service
public interface ActivemqUserService {

    public void sendUser(User user);
    public void receiveUser(User user);
}

ActivemqUserServiceImpl .java

@Service
public class ActivemqUserServiceImpl implements ActivemqUserService {
    @Autowired
    private JmsTemplate jmsTemplate = null;
    private static final String myDestination = "my-destination";
    @Override
    public void sendUser(User user) {

        System.out.println("send user [" + user + "]");
        jmsTemplate.convertAndSend(myDestination,user);
    }

    @Override
    @JmsListener(destination = myDestination,containerFactory = "queueListener")
    public void receiveUser(User user) {
        System.out.println("received user [" + user + "]");

    }
}

验证并测试

添加控制器,来实现服务请求。
ActivemqController.java

@RestController
@RequestMapping("/activemq")
public class ActivemqController {

    @Autowired
    private ActivemqService activemqService;

    @Autowired
    private ActivemqUserService activemqUserService;

    @GetMapping("/msg")
    @ResponseBody
    public Map<String,Object> msg(String message){
        activemqService.sendMsg(message);
        return result(true,message);
    }

    @ResponseBody
    @GetMapping("/user")
    public Map<String,Object> sendUser(Long id,String username,String note){

        User user = new User(id,username,note);
        activemqUserService.sendUser(user);
        return result(true,user);
    }

    private Map<String,Object> result(Boolean success,Object message){
        Map<String,Object> result = new HashMap<>();
        result.put("success",success);
        result.put("message",message);

        return result;
    }
}

启动springboot项目,查看没有报错后,使用postman分别对msg和user接口进行请求访问,并查看日志信息:
在这里插入图片描述

2020-06-25 16:49:42.864  INFO 1544 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2020-06-25 16:49:42.867  INFO 1544 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 3 ms
send message[helloworld]
收到消息:helloworld]

在这里插入图片描述

send user [User{id=1, username='xiaowang', note='hello'}]
received user [User{id=1, username='xiaowang', note='hello'}]

打开MQ的页面,查看定义的两个destination ,页面中显示都有1个Consumer ,查看Consumer 信息。
在这里插入图片描述

Spring Boot与ActiveMQ整合的全面指南 Redis是一种开源的内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。Redis具备高性能、原子操作和多样化的使用场景。高性能:由于所有的数据都存储在内存中,读写操作速度快,适合需要快速读写的应用。原子操作:Redis的所有操作都是原子性的,这意味着它们要么完全被执行,要么完全不执行。持久化。 阅读详情

相关推荐

Spring Boot与ActiveMQ整合实战项目详解

在企业级Java开发中,异步通信和系统解耦已成为提升应用性能与可维护性的关键技术手段。Spring Boot以其“约定优于配置”的设计理念,极大地简化了应用的初始化与集成流程;而ActiveMQ作为一款成熟稳定的开源JMS消息中间件,支持多种协议(如OpenWire、STOMP、AMQP),具备高可用、跨平台、易于集成等优势,广泛应用于分布式系统的解耦、流量削峰和事件驱动架构中。本章将深入探讨Spring Boot与ActiveMQ整合的核心价值。

weixin_42561464的博客 882

SpringBoot整合ActiveMq (简单整合)

ActiveMq 简单介绍 一个消息中间件,常用的消息中间件有RabbitMq、RocketMq、ActiveMq。ActiveMq是Apache推出的一个开源项目 有 点对点 和 发布/订阅 两种模式 1. 导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot..

sora33的博客 1900

Spring Boot整合MyBatis与ActiveMQ快速指南

Spring Boot是一种基于Spring的全新框架,旨在简化Spring应用的创建和开发过程。通过约定优于配置的原则,Spring Boot允许开发者通过最少的配置就能快速启动和运行Spring应用程序。它整合了大量常用的配置和库,大大减少了开发者的配置和部署工作量。微服务架构是一种软件开发方法,它将一个单一应用程序作为一套小型服务开发,这些服务运行在自己的进程中,并通过轻量级的通信机制(通常是HTTP RESTful API)进行协调。

weixin_36047538的博客 380

springboot 集成ActiveMQ

springboot 集成ActiveMQ 打开下载官网:http://activemq.apache.org/download.html 启动类添加注解 @EnableJms //启动消息队列 配置文件添加 server: port: 8080 spring: activemq: broker-url: tcp://127.0.0.1:61616 user: admin password: admin close-timeout: 15

weixin_45198965的博客 334

HTML5期末大作业:关于家乡介绍的HTML网页设计——郑州美景HTML+CSS(5页) 学生DW家乡介绍网页设计作业成品 web课程设计网页规划与设计

HTML5期末大作业:我的家乡——郑州美景HTML+CSS(5页) 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, A+水平作业, 可满足大学生网页大作业网页设计需求, 喜

qq_365392777 1万+

自动化测试工具playwright中文文档-------1.编写测试

Playwright 测试非常简单,它们执行操作,并断言状态是否符合预期。在执行任何操作之前,无需等待任何内容:Playwright 在执行每个操作之前会自动等待一系列可操作性检查通过。此外,在执行检查时也不需要处理竞态条件——Playwright 的断言设计方式能够描述最终需要满足的期望。就这样!这些设计选择允许 Playwright 用户完全忘记他们测试中的不稳定超时和竞态检查。您将学习如何编写第一个测试如何执行操作如何使用断言测试如何在隔离环境中运行如何使用测试钩子。

2301_76646967的博客 2505

SpringBoot 整合ActiveMQ

扩展点补充:如果想额外添加topic消费者,如果MQ服务端消息没有被消费完毕,新增topic消费者可以消费以前未被消费的消息,消息存储规则:所有消费者消费成功,MQ服务端消息删除,有一个消息没有没有消费完成,消息也会存储在MQ服务端。TOPIC订阅模式: 消息属于广播(订阅)模式,消息会被所有的topic消费者消费消息。已经处于运行topic消费者5个,5个消费者消费完成后,MQ服务端消息删除。消息存储规则:消费者消费消息成功,MQ服务端消息删除。特点:消息遵循先到先得,消息只能被一个消费者消费。

u011669370的博客 917

CentOS 7下rsyslog日志服务器搭建全攻略:从安装到避坑

本文详细介绍了在CentOS 7系统上搭建rsyslog日志服务器的完整流程,从基础安装到高级配置,包括协议设置、日志模板设计、安全加固和性能优化。特别分享了生产环境中的实战技巧和常见问题解决方案,帮助用户高效构建可靠的日志管理系统。

happy2的博客 687

ActiveMQ 使用SSL

官方地址:http://activemq.apache.org/how-do-i-use-ssl (如果看不懂英文文档,直接使用浏览器翻译一下,很简单的) 1:服务端生成导出证书 keytool -genkey -alias broker -keyalg RSA -keystore broker.ks keytool -export -alias broker -keystore broker.ks -file broker_cert 会提示输入密码,正常输入即可。其他信息可以不填,直接回车。 2:客户

再鹤的博客 1777

RK3566-预装APP

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

qq_24093081的博客 701

手把手教你学simulink实例--基于Simulink的航空航天器飞行轨迹规划与仿真详细介绍

航空航天器飞行轨迹规划是实现高效、安全和精确飞行的关键技术。通过Simulink进行航空航天器飞行轨迹规划与仿真,可以验证控制算法的有效性、优化飞行路径,并降低开发成本。以下是如何在MATLAB和Simulink中设计并仿真一个航空航天器飞行轨迹规划系统的详细步骤。通过上述步骤,我们成功设计并实现了基于Simulink的航空航天器飞行轨迹规划与仿真系统。该系统能够根据实时环境变化动态调整飞行轨迹,从而提高飞行效率、降低燃料消耗并提升安全性。

MHD0815的博客 388

ActiveMQ入门以及整合spring boot

一、 ActiveMQ 消息队列的使用 MQ MQ:Message Queue 消息队列,就是用来在系统之间进行消息传递的 这个队列有一系列具体的实现技术:ActiveMQ、rabbitMQ、kafka、RocketMQ(alibaba) HttpCilent和MQ的比较 1 HttpClient只能算是两个系统间调用的技术 HttpClient支持跨操作系统跨语言调用 2 MQ可以在两个系统间...

Armymans的博客 1万+

强化学习算法案例——一个经典的走迷宫任务。

作者:禅与计算机程序设计艺术 1.简介 在强化学习(Reinforcement Learning, RL)中,有一个经典的任务——走迷宫,其原理简单易懂,但它的实际意义却深远,它让计算机学习如何通过策略网络(policy network),以最佳的方式解决复杂的任务。本文将介绍如何用强化学习解决这个经典

AI天才研究院 3216

六、Spring/Spring Boot整合ActiveMQ

Spring/Spring Boot整合ActiveMQ一、Spring整合ActiveMQ1.pom.xml2.Queue - 队列2.1 applicationContext.xml2.2 生产者2.3 消费者3.Topic - 主题3.1 applicationContext.xml3.2 生产者3.3 消费者4.消费者 - 监听器4.1 编写监听器类4.2 配置监听器4.3 生产者+消费者一体二、Spring Boot整合ActiveMQ1.Queue - 队列1.1 生产者1.1.1 创建Mave

青啊青斯博客 3262

芒果YOLOv12改进13:独家原创改进最新 CFNet 核心结构|即插即用 | 首发改进显著提升检测性能,小目标检测涨点必备

芒果YOLOv12改进13:独家原创改进最新 CFNet 核心结构|即插即用 | 首发改进显著提升检测性能,小目标检测涨点必备

包括YOLOv5、YOLOv7、YOLOv8等模型改进 285

spring boot整合ActiveMQ实现

一、安装ActiveMQ 注意:JDK版本需要1.7及以上才行 到Apache官方网站下载最新的ActiveMQ的安装包,并解压到本地目录下,下载链接如下:http://activemq.apache.org/download.html,解压后的目录结构如下: 如果我们是32位的机器,就双击win32目录下的activemq.bat,如果是64位机器,则双击win64目录下的active...

lh756437907的博客 1408

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring Boot 整合 ActiveMQ

本文介绍了Spring Boot整合ActiveMQ的实现方法。通过添加activemq-artemis-client和spring-boot-starter-activemq依赖,配置ActiveMQ连接参数,使用JmsTemplate实现消息发送,@JmsListener注解实现消息消费。详细讲解了Queue点对点和Topic发布订阅两种消息模型,并提供了消息转换器、任务链处理等高级功能的实现示例。针对常见问题如消息堆积、连接异常等给出了解决方案,推荐了消息持久化、手动确认等最佳实践。最后建议结合官方文

Terio的博客 988

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Spring Boot 整合 JMS-ActiveMQ,并安装 ActiveMQ

ActiveMQ 启动成功后,单击 Manage ActiveMQ broker 超链接进入管理员控制台。登录 ActiveMQ 的管理控制台。如果能成功登录,说明 ActiveMQ 已经启动成功。,根据你的操作系统选择合适的版本进行下载。这里以 Linux 系统,,可以看到 test-queue 队列以及发送的消息。将下载的压缩包解压到指定目录,例如。

哟,你又在偷偷写bug! 1386

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Spring Boot 2.X - Spring Boot整合JMS之ActiveMQ

Spring Boot 2.X - Spring Boot整合JMS之ActiveMQ Spring Boot 2整合ActiveMQ案例。文中Spring Boot版本为2.1.4.RELEASE。 1.创建项目并引入相关依赖 利用Spring Initializr快速创建一个Spring Boot项目,主要依赖如下: <dependency> ...

XUDC的程序人生 3152

spring boot 整合 activemq消息组件

目录1.准备1.1 下载activemq 相关使用2.配置空的spring boot3.整合activemq消息组件3.1 修改pom.xml ,追加 spring-boot-starter-activemq依赖库3.2 修改application.yml 配置文件进行 ActiveMQ的配置3.3 定义消息消费监听类3.4 定义消费生成者业务接口3.4 定义消费生成者业务实现类3.5 定义jms消息发送配置类,该类主要用于配置队列信息4.运行4.1用命令找到activemq的下载目录 , **active

永远是死循环 303

ActiveMQ 安装与 Spring Boot 整合

本文详细介绍了ActiveMQ的安装与Spring Boot集成方法。主要内容包括:1) ActiveMQ的下载与解压安装步骤;2) 启动方式与端口配置说明;3) Web管理界面的访问与功能;4) 在Spring Boot项目中引入ActiveMQ依赖,配置生产者与消费者组件;5) 常见问题的解决方案。文章提供了完整的代码示例和配置指导,适合开发者快速实现消息中间件集成,并附有版本兼容性建议和目录结构说明。

Terio的博客 839

Spring Boot 整合 ActiveMQ 从入门到精通

本文全面介绍了SpringBoot与ActiveMQ消息中间件的集成方案。主要内容包括:1)ActiveMQ基础概念与安装配置;2)SpringBoot集成ActiveMQ的详细步骤,包括依赖配置、连接设置和两种消息模式(点对点队列和发布订阅主题)的实现;3)高级特性如消息事务管理、重试机制、死信队列和消息过滤;4)性能优化策略与监控管理方案;5)完整的测试方法和生产环境部署建议。文章提供了从基础到高级的完整技术方案,包含大量示例代码和最佳实践,适用于构建高效可靠的企业级消息系统。

油墨香^-^的博客 1108
上一篇: Spring Boot整合JOOQ(入门学习)
下一篇: Spring Boot整合Redisson
CodersCoder
博客等级 码龄10年 90粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值