当前位置:首页>新闻 > 正文

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

  • 2023-04-18 22:48:41来源:腾讯云

介绍

在微服务架构中,服务之间的通信非常重要。在某些情况下,我们需要在服务之间发送和接收消息,以实现更高效、可靠的通信。这时,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在服务之间发送和接收消息(一)

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

焦点速递!泸州河川剧有何特色?四川省首届川剧汇演剧目《柳荫记》里有答案!

川剧《柳荫记》就以梁祝二人在柳荫结拜而命名,以民间传说为演出蓝本,用优美的川剧语言,描绘了梁山伯、祝英台追求幸福生活的理想故事。此次

世界速读:新生儿该如何护理身体_新生儿该如何护理

1、新生儿的身体是非常娇嫩的,很多新手父母面对娇弱的小生命,会感觉到手足无措,在平时的日常生活中,除了要用心呵护新生儿之

当前焦点!DeepMind CEO表示:AI可能获得自我意识

尽管有很多聪明人认为人工智能不会拥有自我意识,但DeepMind的CEO+Demis+Hassabis在接受采访时表态,认为人工智能可能会获得自我意识。这是又

【新视野】珍酒李渡IPO蓄势待发,多品牌战略能否为其提供持续增长势能?

白酒是中国传统文化的重要组成部分,也是中国消费市场的重要板块。随着中国经济的发展和消费升级,白酒行业呈现出高速增长和结构优化的趋势,

世界快资讯丨大宗交易:贵州茅台成交1705.26万元,成交均价1758.00元(04-18)

2023年4月18日,贵州茅台发生2笔大宗交易,总成交9700股,成交金额1705 26万元,成交均价1758 00元,成交价与收盘价持平。

天天快资讯丨漫评美国警察暴力执法:“挥之不去的种族主义”

近日,一份美国加利福尼亚州康特拉科斯塔县地方检察官办公室发布的调查报告显示,10多名美国警察正因涉嫌发送种族主义信息而接受调查。

【天天时快讯】2980邮箱怎么找回 2980邮箱账号忘记了

今天来聊聊关于2980邮箱怎么找回,2980邮箱账号忘记了的文章,现在就为大家来简单介绍下2980邮箱怎么找回,2980

快报:张小泉:2022年营收8.27亿元,每10股派发现金2.50元

4月18日,张小泉股份有限公司(以下简称“张小泉”或“公司”)发布2022年年度报告暨年度利润分配方案的公告。公告称,2022年,公司实现营...

世界快消息!梅赛德斯-AMG纯电EQE53 4MATIC+售86.2万

梅赛德斯-AMG纯电EQE534MATIC+在2023上海车展中正式公布售价。新车售价为86 2万元,百公里加速时间仅为3 8秒。-更多汽车资讯来自网通社。

今日关注:百联股份(600827.SH):2022年净利润同比下降9.06% 拟10派1.2元

格隆汇4月18日丨百联股份(600827)(600827 SH)公布2022年年度报告,营业收入322 69亿元,同比下降6 87%,净利润6 84亿元,同比下

环球最资讯丨美好赛程 利安相伴——利安人寿全情护航南京江岛半程马拉松

4月16日,2023南京江岛半程马拉松在南京建邺区江心洲生态科技岛鸣枪开跑。作为2023南京江岛半程马拉松唯一保险赞助商,利安人寿为一万两千名参

热门看点:【活跃度】4月18日商品期货活跃度排行榜:沪锡、原油、沪镍位列前三

4月18日,商品期货活跃度排行榜(TOP10)出炉:品种名称成交量持仓量活跃度沪锡42 61万11 46万3 72原油16 44万5 45万3 01沪镍29 11万16 06万1

环球快讯:四个月的宝宝大便有粘液怎么办_宝宝大便有粘液怎么办

1、概述2、宝宝大便有粘液,去医院看了,医生说可能是消化不好。可一直就有粘液有时很多,有时没有,一直到现在快半个月了粘液

环球今头条!江苏盐城开展“应急救护和健康安全知识进台企活动”

活动现场(图片来源:盐城市台办)中国台湾网4月18日讯 近日,江苏长盈机械有限公司40多名员工参加了由盐城市台办联合市红十字会开展的“...

当前消息!传统的单机执法记录仪与4G/5G执法仪怎么选?

为了满足社会持续发展的需要,执法记录仪从传统的单机版升级为4G 5G智能版,升级了4G 5G执法记录仪的功能性和使用方便性,逐步推动执法模式标

热消息:武汉光谷政银联动破解科技中小企业“首贷难”

政银联手既能提升科技中小企业授信审批效率,又能降低银行信息搜集和企业融资成本

快讯:宁夏通贵打造“西兰花之乡” 开出乡村振兴好“钱景”

(记者李佩珊)四月的北方春意盎然,宁夏银川市兴庆区通贵乡的西兰花也迎来了种植季。司学忠是通贵乡第一个种西兰花的人,2021年秋天,他先试种

焦点消息!连锁餐饮的万店密钥

连锁餐饮的“千店魔咒”似乎逐渐被打破。近日,北京商报记者了解到,中国餐饮市场连锁化率持续走高,5001-10000家规模发展速度最快等几组数...

环球观点:坐地铁被收“超时费”上热搜 宁波也有这笔费用吗?

中国宁波网记者张燕  日前,深圳一市民在乘坐地铁时因在站内停留4小时,除车费外还被收取了15元的超时费,这消息一度冲上热搜根据该市民发布

当前资讯!字节旗下火山引擎发布大模型;30多位选手持有的剑桥科技涨停!报名只剩1天,和高手一起冲刺大奖!

粉丝朋友们,周二上午,指数步入休整,3604只个股下跌,1379只个股上涨。盘面上,CPO板块表现最亮眼,此外公布亮丽年报和一季报的公司也稳步上

全球速递!正在消失和已经消失的快递企业们

过去三年,对很多企业来讲,是“黑天鹅”群起而飞、如履薄冰与举步维艰的三年。快递亦不例外。大浪淘沙的江湖厮杀中,有人“逆”势而起,一...

环球新资讯:美8名警察开94枪击毙非裔男子 大陪审团:不起诉

据美国全国广播公司(NBC)报道,相关官员当地时间17日表示,俄亥俄州大陪审团拒绝就枪杀非裔男子杰兰沃克一事,向八位涉嫌开枪的警察予以起诉。

焦点资讯:广汽冯兴亚:广汽埃安力争今年实现IPO

【广汽冯兴亚:广汽埃安力争今年实现IPO】广汽集团总经理冯兴亚在上海车展期间透露,广汽埃安成功完成A轮融资,投后估值超过一千亿,力争今年

天天速看:资助的寒门学子传来喜讯 “如意姐姐”最近很开心

“您好,我是2019年毕业于南通一中的王理想,大学期间多次受到飞马国际的爱心捐助,我今年考研,目前已被哈尔滨工程大学录取,向各位爱心人士

快报:张良点金:黄金,原油隔夜空单获利中继,日内操作思路如下!

黄金原油隔夜空单获利中继日内操作思路如下今日操作思路黄金日线趋势为多一小时周期方向空日内操作思路继续高空看跌一小时周期上不出现底部形

【天天速看料】提前半个月辞职扣工资合法吗

提前半个月辞职扣工资合法。劳动者辞职要提前三十天以书面的形式通知单位,只提前半个月给单位造成经济损失的可以扣工资作为赔偿。但扣除的部

世界观天下!德媒:奥斯梅恩对转会拜仁抱开放态度,巨额费用是主要障碍

直播吧4月18日讯据德国媒体Sport1透露,奥斯梅恩对转会拜仁抱开放态度,但引进他的巨额费用是转会成行的主要障碍。S

播报:天宇股份(300702):4月17日北向资金增持3.64万股

4月17日北向资金增持3 64万股天宇股份。近5个交易日中,获北向资金增持的有3天,累计净增持9 01万股。近20个交易日中,获北向资金减持的有9天

猜您喜欢

    Copyright ©  2015-2022 西南服装网版权所有  备案号:皖ICP备2022009963号-8   联系邮箱:39 60 29 14 2@qq.com