Spring Boot 整合 JMS(Active MQ 实现)

1 安装ActiveMQ
2 配置Active MQ 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
<version>2.2.7.RELEASE</version>
</dependency>
3 修改application.properties配置文件
在application.properties中配置Active MQ:
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.in-memory=true
spring.activemq.pool.enabled=false
#默认值false,表示点到点模式,true时代表发布订阅模式
spring.jms.pub-sub-domain=false
4 创建消息生产者和消费者
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Service; import javax.jms.Destination; @Service("producer")
public class Producer {
/**
* 也可以注入JmsTemplate,JmsMessagingTemplate对JmsTemplate进行了封装
*/
@Autowired
private JmsMessagingTemplate jmsTemplate; /**
* 发送消息,destination是发送到的队列,message是待发送的消息
*
* @param destination
* @param message
*/
public void sendMessage(Destination destination, final String message) {
jmsTemplate.convertAndSend(destination, message);
}
}
通过JmsMessagingTemplate 的convertAndSend方法向目的地 destination发送消息。 新增消息监听者:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component; @Component
public class ConsumerListener {
private static Logger logger = LoggerFactory.getLogger(ConsumerListener.class);
/**
* 使用JmsListener配置消费者监听的队列
* @param receivedMsg 接收到的消息
*/
@JmsListener(destination = "myDest.queue")
public void receiveQueue(String receivedMsg) {
logger.info("Consumer收到的报文为: {}", receivedMsg);
}
}
@JmsListener是Spring 4.1 提供的一个新特性,用于简化JMS开发,只需使用此注解的属性destination指定要监听的目的地【myDest.queue】,即可接收该目的地发送的消息。消费者2 ConsumerListener2 的代码同上,但是日志如下:
        logger.info("Consumer2收到的报文为: {}", receivedMsg);
温馨提示,消息消费者和生产者的类上必须加上注解 @Component 或者 @Service,使得消息消费者类就会被委派给Listener类,原理类似于使用SessionAwareMessageListener以及MessageListenerAdapter来实现消息驱动POJO。
5 测试 MQ
import org.apache.activemq.command.ActiveMQQueue;
import javax.jms.Destination; @Autowired
private Producer producer;
@Test
public void jmsActiveMqTest() throws InterruptedException {
Destination destination = new ActiveMQQueue("myDest.queue");
for (int i = 0; i < 21; i++) {
producer.sendMessage(destination, String.format("My name is Wiener%s", i));
}
}
控制台显示消费者接收到的消息如下:
Consumer收到的报文为: My name is Wiener0
Consumer2 收到的报文为:My name is Wiener1
Consumer收到的报文为: My name is Wiener2
Consumer2 收到的报文为:My name is Wiener3
Consumer收到的报文为: My name is Wiener4
Consumer2 收到的报文为:My name is Wiener5
Consumer收到的报文为: My name is Wiener6
Consumer2 收到的报文为:My name is Wiener7
...
Reference
- https://www.cnblogs.com/zfblog/p/7371970.html
 - JavaEE开发的颠覆者: Spring Boot实战
 
Spring Boot 整合 JMS(Active MQ 实现)的更多相关文章
- spring boot整合JMS(ActiveMQ实现)
		
pom依赖如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht ...
 - spring boot整合activemq消息中间件
		
spring boot整合activemq消息中间件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi ...
 - RabbitMQ使用及与spring boot整合
		
1.MQ 消息队列(Message Queue,简称MQ)——应用程序和应用程序之间的通信方法 应用:不同进程Process/线程Thread之间通信 比较流行的中间件: ActiveMQ Rabbi ...
 - Spring Boot整合Mybatis并完成CRUD操作
		
MyBatis 是一款优秀的持久层框架,被各大互联网公司使用,本文使用Spring Boot整合Mybatis,并完成CRUD操作. 为什么要使用Mybatis?我们需要掌握Mybatis吗? 说的官 ...
 - spring boot 整合 mybatis 以及原理
		
同上一篇文章一样,spring boot 整合 mybatis过程中没有看见SqlSessionFactory,sqlsession(sqlsessionTemplate),就连在spring框架整合 ...
 - Spring Boot 整合JDBC 实现后端项目开发
		
一.前言 二.新建Spring Boot 项目 三.Spring Boot 整合JDBC 与MySQL 交互 3.1 新建数据表skr_user 3.2 Jdbcproject 项目结构如下 3.3 ...
 - activeMQ入门+spring boot整合activeMQ
		
最近想要学习MOM(消息中间件:Message Oriented Middleware),就从比较基础的activeMQ学起,rabbitMQ.zeroMQ.rocketMQ.Kafka等后续再去学习 ...
 - Spring Boot 整合 Hibernate5
		
Run java -jar -Dspring.profiles.active=dev sport.web.services.jar Maven <parent> <groupId&g ...
 - Spring Boot (十三): Spring Boot 整合 RabbitMQ
		
1. 前言 RabbitMQ 是一个消息队列,说到消息队列,大家可能多多少少有听过,它主要的功能是用来实现应用服务的异步与解耦,同时也能起到削峰填谷.消息分发的作用. 消息队列在比较主要的一个作用是用 ...
 - Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询
		
摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 预见未来最好的方式就是亲手创造未来 – <史蒂夫·乔布斯传> 』 运行环境: ...
 
随机推荐
- SQL Server 2025 AI相关能力初探
			
SQL Server 在2024年11月开始进行社区私有预览(链接),由于涉及AI能力,我也是第一时间申请了内侧资格,悲剧的是,直到2025年2月,才拿到预览版的测试资格-.-,此时已经是CTP1.3 ...
 - 震惊!AI 编程竟然让程序员 “失业” 了?真相让人意外
			
在科技飞速发展的当下,AI 编程的异军突起无疑成为了整个编程领域乃至社会各界热议的焦点. 去年,全球首个AI程序员Devin横空出世,不仅能独立完成代码开发.修复Bug,甚至能通过阅读技术文档自主学习 ...
 - ABAQUS阻尼设置
			
结构阻尼 瑞利阻尼
 - 基于Element的el-input实现一个可以显示千分位符的金额输入框
			
直接上代码 1 <template> 2 <!-- 定义一个 Element UI 的输入框组件 --> 3 <el-input 4 v-model="form ...
 - php nginx 504 Gateway Timeout 网关超时错误
			
对于 Nginx + FastCGI上的504网关超时错误(php-fpm),我们可以修改PHP和nginx的执行超时时间. 配置php 修改 php.ini(CentOS路径是/etc/php.in ...
 - 200条Git命令复习总结使用
			
新建 创建一个新的 git 版本库.这个版本库的配置.存储等信息会被保存到.git 文件夹中 # 初始化当前项目 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init ...
 - websocket 后台新订单通知 —— Laravel 5.8 workman PHPSocket.IO教程
			
websocket 后台新订单通知 -- Laravel 5.8 Laravel-echo-server教程 PHPSocket.IO,PHP跨平台实时通讯框架 PHPSocket.IO是PHP版本的 ...
 - deepseek内网离线部署手册
			
前言 在当下 AI 浪潮汹涌的时代,DeepSeek 以其卓越的性能和出色的表现,迅速成为了众多专业人士和科技爱好者热议的焦点工具.在众多AI大模型的比拼中,DeepSeek 展现出了优越的实力.然而 ...
 - 【Web】前端框架对微软老旧浏览器的支持
			
零.原因 最近要做一个项目,要能在学校机房运行的,也要在手机上运行.电脑和手机,一次性开发,那最好的就是响应式前端框架了.手机和正常的电脑兼容性问题应该都不大,但是学校机房都是Win7的系统,自带的都 ...
 - 经过几天的努力Biwen.AutoClassGen终于实现了DTO复杂属性的生成
			
前言 距写上一篇 https://www.cnblogs.com/vipwan/p/18535459 生成DTO已经有一段时间了, 最初没有考虑复杂二级属性嵌套的实现,而是直接使用排除使用自定义的方式 ...