springboot 2.3_SpringBoot对消息队列(MQ)的支持

e58559374fe6f09dc36e07b4748f8fb8.png

1.异步消息的定义

异步消息的主要目的是为了系统与系统之间的通信,所谓异步消息即消息发送者无需等待消息接收者的处理以及返回,甚至无需关心消息是否发送成功。

在异步消息中有两个很重要的概念,即消息代理和目的地,当消息发送者发送消息之后,消息将由消息代理接管,消息代理保证消息传递到指定目的地。

异步消息主要有两种目的地形式,队列(queue)和主题(topic),队列用于点对点形式的消息通信,主题用于发布订阅式的消息通信。

1.1目的地形式分类

1.1.1点对点式

当消息发送者发送消息,消息代理将消息后将消息放进一个队列里,当有消息接收者来接收消息的时候,消息将从队列中取出传递给消息接收者,这时候队列里就没有了这条消息。点对点式确保每一条消息只有唯一的发送者和接收者,但这并不能说明只有一个接收者能够从队列中接收消息,因为队列中有多个消息,点对点式只保证每一条消息只有唯一的发送者和接收者。

1.1.2发布/订阅式

发布订阅式是消息发送者发送消息到主题,而多个消息接收者监听这个主题,此时的消息发送者和接收者分别叫做发布者和订阅者。

1.2 企业级消息代理

JMS即JAVA消息服务,是基于JVM的消息代理规范,ActiveMQ是一个JMS的实现
AMQP也是一个消息代理的规范,他不仅兼容JMS,还支持跨语言和平台,AMQP的主要实现是RabbitMQ。

1.3 Spring以及SpringBoot的支持

Spring针对JMS和RabbitMQ分别提供了JmsTemplete和RabbitTemplete来发送消息。为我们提供了@JmsListener,@RabbitListener注解来监听消息代理发送的消息。我们分别需要通过@EnableJms和@EnableRabbit来开启支持。

SpringBoot自动配置了上述@EnableJms,@EnableRabbit,JmsTemplete,RabbitTemplete的支持,同时我们可以在application.properties文件中分别以spring.activemq和spring.rabbitmq来分别配置所需的属性。

2.SpringBoot对JMS(ActiveMQ)的支持下载安装

ActiveMQ的官方下载地址:http://activemq.apache.org/download.html,下载安装完成后,进入bin目录,发现有win32和win64两个文件夹,这2个文件夹分别对应windows32位和windows64位操作系统的启动脚本。进入对应的文件夹中双击activemq.bat。即可正常启动。


访问http://localhost:8161/admin。输入默认的用户名和密码:admin/admin即可进入ActiveMQ的控制台。

2.2 配置

SpringBoot提供了针对ActiveMQ的支持,只需要在pom.xml文件中引入即可:

<dependency>

在application.properties配置ActiveMQ的消息代理地址:

t:61616

注意,此处配置的消息代理必须让ActiveMQ启动时才有作用,否则无效。

在实际情况下,消息的发布者和接受者一般都是分开的,而这里,我们仅作测试,将消息发送者和接收者放在一个程序中。

2.3代码文件

2.3.1消息定义

public 

2.3.2消息发送及目的地定义

@SpringBootApplication

CommandLineRunner接口中的run方法,是在程序启动后就会执行的代码。JmsTemplate  是用来操作JMS消息的操作类。

2.3.3消息监听

@Component

@JmsListener显示的定义了指定要监听的目的地。

2.3.4运行结果

运行结果显示监听收到了消息

76afe60cb6e2937300a835187755d798.png

ActiveMQ的控制台中显示我们发送的消息

bb9994c685b2c269ac4ed606f8d78a59.png

3.SpringBoot对AMQP(RabbitMQ)的支持

3.1RabbitMQ的安装配置

RabbitMQ是基于Erlang语言开发的。所以安装RabbitMQ之前需要先下载安装配置Erlang,下载地址:http://www.erlang.org/downloads


并将安装后的D:\Program Files\erl9.0\bin的bin目录配置到path环境变量中。然后下载安装RabbitMQ。下载地址:http://www.rabbitmq.com/download.html
安装完成之后在开始菜单中找到RabbitMQ Command Promt,打开控制台,输入命令

rabbitmq-plugins enable rabbitmq_management

控制台无错误之后,访问http://localhost:15672。使用默认的用户名/密码:guest/guest进行登录。


即可见到如图所示界面:

d2b8767e0d81d517609282126536eadc.png

3.2 RabbitMQ测试代码文件

SpringBoot默认Rabbit的主机为localhost,端口号为5672,所以我们无需为RabbitMQ配置其他信息。


入口文件

import org.springframework.amqp.core.Queue;

接收类

@Component

3.3 测试结果

1503f1811a63a567ba175827cf800f84.png

在RabbitMQ控制台中额可以看到

9054a32a1aa57a462d2103b86b5e3ef6.png

4 小结

这里主要是对ActiveMQ和RabbitMQ进行了简单的尝试,了解了异步消息的通信。有兴趣的同学可以进行深入研究。

作者:微瞰技术

出处:csdn.net/u011342403/article/details/77940765

2b323321558d9859bccdfbdc667678cc.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

改变世界的十大经典物理实验及十大著名思想实验

来源&#xff1a;EETOP科学实验是物理学发展的基础&#xff0c;又是检验物理学理论的惟一手段&#xff0c;特别是现代物理学的发展&#xff0c;更和实验有着密切的联系。现代实验技术的发展&#xff0c;不断地揭示和发现各种新的物理现象&#xff0c;日益加深人们对客观世界规律…

智慧城市_城市大脑:加速构建智慧城市

(来源&#xff1a;天津数港)原标题&#xff1a;城市大脑&#xff1a;加速构建智慧城市加关注当前&#xff0c;伴随着5G、大数据、人工智能、区块链和新基建等一波又一波科技浪潮的到来&#xff0c;智慧城市的建设方兴未艾。然而&#xff0c;“智慧城市不智慧”的问题一直困扰着…

爱尔兰圣三一学院计算机全球排名,QS世界大学学科排名,爱尔兰圣三一学院20个学科进世界百强...

原标题&#xff1a;QS世界大学学科排名&#xff0c;爱尔兰圣三一学院20个学科进世界百强“爱尔兰、教育、悠久学术历史、世界一流、最大图书馆……”&#xff0c;看到这些关键词&#xff0c;个蹦入脑海中的是什么呢&#xff1f;相信大家都已经猜出来了&#xff0c;拥有如此之多…

nginx做服务器入口_「查缺补漏」巩固你的Nginx知识体系

Nginx篇基本介绍Nginx是一款轻量级的 Web服务器 / 反向代理服务器 / 电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器&#xff0c;主要的优点是&#xff1a;支持高并发连接&#xff0c;尤其是静态界面&#xff0c;官方测试Nginx能够支撑5万并发连接内存占用极低配置简单&…

Oracle 维护数据的完整性 一 索引

简介:索引是用于加速数据存取的数据对象,合理的使用索引可以大大降低i/o 次数,从而提高数据的访问性能. 当我们从一张表中检索我们需要的数据是,oralce往往会进行全表扫描,就是遍历所有的数据行,来找到我们需要的数据,并返回结果集给我们,这个过程就像下图: 当这个人需要去图书…

特征值_陶哲轩数学发现的故事 | 特征值特征向量等式

12月3日&#xff0c;陶哲轩在其个人博客上更新了一篇文章&#xff0c;https://terrytao.wordpress.com/2019/12/03/eigenvectors-from-eigenvalues-a-survey-of-a-basic-identity-in-linear-algebra/说他与合作者在arXiv上更新了此前关于特征值的文章Eigenvectors from Eigenva…

迪士尼研究院等将人造“神经纤维”用于软体机器人,赋予其“本体感知能力”!...

来源&#xff1a;机器人大讲堂 导读软体机器人模仿章鱼&#xff0c;象鼻&#xff0c;海星等动物而设计&#xff0c;栩栩如生&#xff0c;他们由软材料&#xff08;硅胶&#xff0c;橡胶&#xff09;构成&#xff0c;有着天生优良的环境适应性以及安全交互性。但是相比于传统机器…

C# 静态类和非静态类(实例类)

1.非静态类里面可以出现静态成员和非静态成员 using System; namespace shuzu { class dom_class{public string name "张三";private int age;public int Age//通过属性访问私有成员{get { return age; }set { age value; }}}class aclass {static void Main(s…

保存时间 默认_一些不起眼但又非常的实用的PPT制作技巧,大大节省PPT制作时间...

从PPT小白到PPT大神的过程中&#xff0c;我们总会无数次碰壁&#xff0c;无数次陷入困境。今天为大家带来的是一些不起眼的PPT技巧&#xff0c;但是非常的实用&#xff0c;不信就看下文吧&#xff01;自定义访问工具栏在PPT中我们有很多的常用操作&#xff0c;例如「左对齐/右对…

人机融合智能:人工智能3.0

来源&#xff1a;人机与认知实验室摘要&#xff1a;人工智能&#xff08;客观智能&#xff09;与人类智能&#xff08;主观智能&#xff09;最有可能演变成为一对相生相克的阴阳对立统一体&#xff0c;从而开启一个全新的时代&#xff0c;即“人机融合智能时代”。在“人机融合…

css 背景图片透明度_web前端入门到实战:css重点知识和bug解决方法

1.图片向下撑大3像素问题在一个盒子里面放一张图片&#xff0c;默认情况下&#xff0c;图片会向下撑大3像素&#xff0c;有以下几种解决方法&#xff1a;1.1给图片添加display:block&#xff1b;1.2给图片添加float:left&#xff1b;1.3 给图片添加vertical-align:middle;1.4 给…

像个字段相减绝对值_遇见你丨像个英雄一样活着 瘫痪作家用手指敲击文字著百万字文学作品...

患有先天性肌迟缓症&#xff0c;出生后便全身瘫痪&#xff0c;这样一个原本生活里充满艰难的人&#xff0c;他的名字却出现在了中国作家协会的2020年新会员名单中&#xff0c;他叫高淳。 今年36岁的高淳&#xff0c;家住江苏常熟&#xff0c;从2002年开始文学创作&#xff0c;凭…

一幅图读懂量子力学(数学的判决)

来源&#xff1a;悦智网 未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#x…

python中扑克牌类设计_Python中的计数 Counter类

点击上方"AI机器学习与深度学习算法"&#xff0c;选择"星标"公众号原创干货&#xff0c;第一时间送达在很多场景中经常会用到统计计数的需求&#xff0c;比如在实现 kNN 算法时统计 k 个标签值的个数&#xff0c;进而找出标签个数最多的标签值作为最终 kNN…

计算机多文件管理,电脑文件管理几条小技巧

电脑文件管理几条小技巧在电脑的内部&#xff0c;在电脑的桌面上&#xff0c;在“资源管理器”中&#xff0c;充斥着无序与混乱,这种虚拟的混乱极大地影响了电脑的性能和我们办公的效率&#xff0c;下面小编为大家带来了电脑文件管理几条小技巧&#xff0c;希望对大家有用。电脑…

python读取excel画散点图对应多个y_Python Scatter Plot,每个X都有多个Y值

How can I plot different numbers of Y values for each X value 只需分别绘制每个组&#xff1a; for xe, ye in zip(x, y): plt.scatter([xe] * len(ye), ye) and how can I change the X axis from being the numbers 1 and 2 to text categories “cat1” and “cat2”. 手…

追加10亿!腾讯宣布设立15亿元“战疫基金”

来源&#xff1a;腾讯刚刚&#xff0c;腾讯宣布设立15亿元“抗击新型冠状病毒感染肺炎疫情综合保障基金”&#xff08;以下简称战疫基金&#xff09;。这是腾讯在设立首期3亿元疫情防控基金、2亿元战疫开发者公益联盟资金池后&#xff0c;再次升级追加10亿元基金&#xff0c;为…

equals null报错吗_轻轻松松教你搞定Java中的==和equals

前言相信很多读者关于和equals懂了又懵&#xff0c;懵了又懂&#xff0c;如此循环&#xff0c;事实上可能是因为看到的博客文章之类的太多了&#xff0c;长篇大论&#xff0c;加上一段时间的洗礼之后就迷路了。本篇文章再一次理清楚。当然如果觉得本文太啰嗦的话&#xff0c;当…

java八股 spring + mybatis

Spring常用注解&#xff08;绝对经典&#xff09;_spring注解-CSDN博客 框架篇-02-Spring-单例bean是线程安全的吗_哔哩哔哩_bilibili 1.spring.bean 单例 线程不安全 2.AOP 项目里可以说记录用户登录日志&#xff0c;利用request去获取姓名、ip、、请求方式、url&#xff0…

服务器数据库2008怎么备份数据库文件,怎么备份SQL Server2008数据库

在使用SQL Server 2008服务器的时候&#xff0c;我们需要定时的备份数据库来防止数据的丢失&#xff0c;下面学习啦小编为大家介绍备份SQL Server 2008数据库的方法。备份SQL Server 2008数据库的方法在开始菜单中点击“SQL Server Management Studio”在弹出的界面点击连接&am…