Spring Cloud Bus在服务之间发送和接收消息(一)

2023-04-17 09:30:18 腾讯云

介绍

在微服务架构中,服务之间的通信非常重要。在某些情况下,我们需要在服务之间发送和接收消息,以实现更高效、可靠的通信。这时,Spring Cloud Bus 是一个非常有用的工具。

Spring Cloud Bus 是一个用于在分布式系统中发送和接收消息的框架。它基于 Spring Boot 和 Spring Cloud 构建,并且可以与多种消息代理一起使用,例如 RabbitMQ 和 Kafka。

在本文中,我们将介绍 Spring Cloud Bus 的基本概念和用途,并提供详细的文档和示例,以帮助您了解如何使用它来实现服务之间的消息传递。


(资料图)

Spring Cloud Bus 的基本概念和用途

Spring Cloud Bus 的主要目的是实现服务之间的消息传递和事件发布。它使用轻量级的消息代理作为基础,并使用 Spring Boot 和 Spring Cloud 进行构建。

在 Spring Cloud Bus 中,每个服务都可以作为生产者或消费者。服务可以通过发送消息来通知其他服务发生的事件,也可以订阅其他服务发送的消息以执行相应的操作。

Spring Cloud Bus 还提供了一些有用的特性,例如:

支持异步消息传递:Spring Cloud Bus 可以在多个服务之间异步传递消息,从而实现更高效、可靠的通信。支持消息广播:Spring Cloud Bus 可以将消息广播到所有订阅该消息的服务,从而实现全局的事件发布。支持消息过滤:Spring Cloud Bus 可以根据消息的类型或内容来过滤消息,从而实现更精确的消息传递。支持消息持久化:Spring Cloud Bus 可以将消息持久化到消息代理中,从而确保在服务宕机或网络故障时不会丢失消息。

Spring Cloud Bus 的使用

在本节中,我们将介绍如何使用 Spring Cloud Bus 来实现服务之间的消息传递。

配置 Spring Cloud Bus

要使用 Spring Cloud Bus,首先需要在每个服务中添加 Spring Cloud Bus 的依赖项。可以在 Maven 或 Gradle 中添加以下依赖项:

    org.springframework.cloud    spring-cloud-starter-bus-amqp

此依赖项包含了 Spring Cloud Bus 的核心库以及与 AMQP(如 RabbitMQ)消息代理集成所需的库。

接下来,需要配置每个服务以使用 Spring Cloud Bus。可以在 application.yml 或 application.properties 文件中添加以下配置:

spring:  rabbitmq:    host: localhost    port: 5672    username: guest    password: guestmanagement:  endpoints:    web:      exposure:        include: bus-refresh

这个配置指定了 RabbitMQ 的地址和凭证信息,并且开启了一个名为 "bus-refresh" 的管理端点。通过该端点,可以触发服务的刷新操作(例如,重新加载配置文件)。

还可以配置其他 Spring Cloud Bus 的选项。例如,可以使用 spring.cloud.bus.id 属性指定当前服务的标识符,使用 spring.cloud.bus.destination 属性指定要订阅的目的地,使用 spring.cloud.bus.trace.enabled 属性启用跟踪功能等等。

在服务之间发送消息

使用 Spring Cloud Bus,可以通过向消息代理发送消息来实现服务之间的通信。

在 Spring Boot 应用程序中,可以使用 @Autowired 注解将 Spring Cloud Bus 作为一个 bean 注入。然后,就可以使用 Spring Cloud Bus 提供的 API 来发送消息了。

例如,下面是一个示例,演示如何在一个服务中发送消息:

@RestController@RequestMapping("/bus")public class BusController {    @Autowired    private BusProperties busProperties;    @Autowired    private RabbitTemplate rabbitTemplate;    @PostMapping("/send")    public void sendMessage(@RequestBody String message) {        String destination = busProperties.getDestination();        rabbitTemplate.convertAndSend(destination, message);    }}

在这个示例中,BusController 类使用 @RestController 和 @RequestMapping 注解来定义一个 RESTful 端点。该端点可以接收一个消息体,并将其发送到 Spring Cloud Bus 的目的地。在发送消息之前,BusController 从 BusProperties bean 中获取目的地信息,并使用 RabbitTemplate bean 来实现与 RabbitMQ 的通信。

在服务之间接收消息

除了发送消息外,还可以通过订阅 Spring Cloud Bus 的目的地来接收消息。要实现这个功能,可以在应用程序中注册一个 MessageListener bean,并使用 @RabbitListener 注解来指定要订阅的目的地。

例如,下面是一个示例,演示如何在一个服务中接收消息:

@Componentpublic class MessageListener {    @RabbitListener(queues = "${spring.cloud.bus.destination}")    public void handleMessage(String message) {        System.out.println("Received message: " + message);    }}

在这个示例中,MessageListener 类使用 @Component 注解将其声明为 Spring bean。然后,该类使用 @RabbitListener 注解来指定要订阅的目的地。在收到消息后,handleMessage 方法将消息输出到控制台。

标签:

相关文章

Spring Cloud Bus在服务之间发送和接收消息(一)

在微服务架构中,服务之间的通信非常重要。在某些情况下,我们需要在服务之间发送和接收消息,以实现更高效

2023-04-17

云遇中国 “水陆空” 科技助力春耕春播_环球速递

央广网北京4月15日消息大型农械开垦千里沃野,轻巧农机解放双手,高端人才扎根基层……各地正在科技的助...

2023-04-17

武汉理工大学马房山校区地址_武汉理工大学马房山校区 世界今日讯

今天小编肥嘟来为大家解答以上的问题。武汉理工大学马房山校区地址,武汉理工大学马房山校区相信很多小伙伴

2023-04-17

热头条丨2023中国城市科创金融指数发布

4月14日,首期中国城市科创金融指数(简称CCSTFI)在2023济南科创金融论坛上正式发布。CCSTFI由国家高端智

2023-04-17

天天观天下!北京地铁不再强制乘客佩戴口罩!时隔近两年客流量重回1200万人次

近期,多名网友在社交平台上反映,北京地铁站内佩戴口罩的提示标语被工作人员撕除。记者从北京地铁了解到,

2023-04-16

全球微头条丨抖音小店巨量千川100元推多少流量?巨量千川怎么投放?

巨量千川是抖音商城熟知的推广工具,通过巨量千川可以快速增加抖音小店​的曝光率,有的商家想先投入100元

2023-04-16

保护生态屏障联合行动在呼伦贝尔启动

本网讯(草原全媒·正北方网记者  张巧珍  通讯员  张蒙)4月16日,“预防火灾,珍爱生命,守护北

2023-04-16

天天新消息丨长三角科创投资促进会与国投集团构建长期战略合作关系

近日,长三角科创投资促进会(以下简称“科促会”)与国家开发投资集团有限公司(以下简称“国投集团”...

2023-04-16

智慧船闸_对于智慧船闸简单介绍|每日视点

1、《智慧船闸》是2018年12月东南大学出版社出版的图书。2、作者是张加雪、钱江、张桂荣、杨正。文章到此就

2023-04-16

给 25 岁女性的圣诞礼物创意 环球热资讯

在圣诞树旁微笑的女人为生活中的25岁女性选择合适的圣诞礼物并不像您担心的那么困难。在您开始购物之前,考

2023-04-16

藏在年轻人小众爱好里的“大生意”-世界微头条

来源|Tech星球文|陈桥辉相比于古玩、玉石、潮鞋这些热门的兴趣爱好,小众爱好似乎并没有被更多人所重视。其

2023-04-16

专业选择测试自己适合哪个专业_专业选择测试

1、参加过学校团体测试的都知道北大专业选择评估系统升学版测试挺准的。2、很有用。3、推荐一下。本文到此

2023-04-16

日本警方搜查袭击岸田文雄嫌疑人住所 确认无危险爆炸物

4月16日电,当地时间15日,日本首相岸田文雄在和歌山县参加助选活动准备进行演讲时,遭一名男子投掷筒状爆

2023-04-16

全球今日讯!漫威:张衡见过天神,铁拳打过凤凰之力

神矛局可以看成是中国的神盾局,神盾局有复仇者联盟,神矛局也有“封神”、“皇朝”等英雄团队,其中的...

2023-04-16

没有温度键的空气炸锅怎么开锅?|世界今亮点

一般来讲将第一次用的空气炸锅里外面都清洗干净,然后把没装任何食物的空锅打开进行加热,这便是给第一次用

2023-04-16

会计南昌什么大学好校推荐有读的

1、会计南昌什么大学好江苏省内最好的会计专业院校是南京大学。另外有:中国矿业大学、东南大学、江苏大学

2023-04-15

环球新消息丨全民国家安全教育日,上一堂“消防必修课”

新京报讯(记者郭懿萌)2023年4月15日是第8个“全民国家安全教育日”,作为社会安全的重要组成部分,消...

2023-04-15

当前快讯:中百集团:4月14日召开业绩说明会,投资者参与

2023年4月14日中百集团000759发布公告称公司于2023年4月14日召开业绩说明会具体内容如下问您认为中百的核心

2023-04-15

世界要闻:建行费县支行组织合规一刻钟警示教育系列晨会

4月12日,建行费县支行认真精选今年以来上级行通报的典型违规案例,组织全行合规一刻钟警示教育系列晨会,

2023-04-15

笃行的意思是_笃行的意思 全球快讯

1、真人执行真理笃行求实是什么意思认真做好就是明德崇智以人为本育桃李厚朴笃行求实创新塑栋梁——吉林...

2023-04-15

印尼爪哇岛强震 官方称“没有引发海啸的可能”_世界头条

  据印尼气象学、气候学和地球物理学局(BMKG)消息,当地时间4月14日16时55分,在印尼东爪哇岛的图班(TUBA

2023-04-15

湖南370余家企业参展第133届广交会 线下800多个展位,参展面积为历年来最大_当前短讯

华声在线4月14日讯(全媒体记者黄婷婷通讯员刘婷)第133届中国进出口商品交易会(简称“广交会”)4月15日开幕,

2023-04-15

华强北的手表,汤主的测评来了! 环球速看料

“好物分享”只分享自己入手过的产品今天这篇文章绝对会引起很多人的喜欢和共鸣,4天前的一个早晨,我醒...

2023-04-15

今日快看!标准瑜伽摩天体式的解释

1、在瑜伽体式中,摩天大楼是一种有效的体式,也是一种轻松的体式。练习摩天体式对我们的健康很有帮助,但

2023-04-15

芝罘区多街道社区开展垃圾清洁活动,改善居民生活环境

大小新闻4月13日讯(芝罘融媒记者王睿秀杰李淼摄影报道)文明,是一座城市的内在气质,能够赋予城市发展生

2023-04-15

【快播报】山东舰3天起降120架次,“奇迹”在中国海军身上会不断发生

最近,日本对于中国在周边的演练行动,又开始“计数”了。根据日本统合幕僚监部的通报,在7日到9日间,...

2023-04-15

钢琴品牌价位(钢琴价格品牌)

大家好,小乐来为大家解答以上的问题。钢琴品牌价位,钢琴价格品牌这个很多人还不知道,现在让我们一起来看看

2023-04-15

南京动物园回应网红猴被欺负困在水中:没有霸凌 会游泳

南京动物园回应网红猴被欺负困在水中:没有霸凌会游泳

2023-04-14

证监会就修订《期货从业人员管理办法》公开征求意见-环球观天下

App4月14日消息,证监会对《期货从业人员管理办法》进行修订,形成了《期货从业人员管理办法(征求意见稿)

2023-04-14

头条焦点:基金一季报持续发布 医药、科技成长再被基金经理关注

基金一季报持续发布医药、科技成长再被基金经理关注

2023-04-14

最新发布
精彩图文
精彩推送

Copyright @  2015-2018 世纪it网版权所有  备案号:京ICP备2021034106号-22   联系邮箱:55 16 53 8@qq.com