Spring Cloud Bus在服务之间发送和接收消息示例
下面是一个使用 Spring Cloud Bus 和 RabbitMQ 的完整示例。在此示例中,我们将创建两个服务:Config Service 和 Client Service。Config Service 负责存储应用程序的配置文件,Client Service 则使用这些配置文件来配置自身。
(资料图)
配置 Config Service
在 Config Service 中,我们需要将配置文件存储在 Git 存储库中,并启用 Spring Cloud Bus 和 RabbitMQ 支持。
首先,可以在 application.yml 文件中添加以下配置:
spring: cloud: config: server: git: uri: https://github.com/your-git-repo/config-repo.git bus: enabled: true trace: enabled: true rabbit: enabled: true
在这个示例中,我们将 Config Service 配置为从 GitHub 存储库中加载应用程序的配置文件接下来,需要在 Config Service 中添加一个 REST 控制器,该控制器可以将 Spring Cloud Bus 消息发送到 RabbitMQ。可以使用以下代码来实现:
@RestControllerpublic class ConfigController { private final BusRefreshListener busRefreshListener; @Autowired public ConfigController(BusRefreshListener busRefreshListener) { this.busRefreshListener = busRefreshListener; } @PostMapping("/refresh") public void refresh() { busRefreshListener.refresh(); }}
在这个示例中,我们创建了一个 REST 控制器,该控制器将在 /refresh 路径上监听 POST 请求。当接收到该请求时,控制器将调用 BusRefreshListener bean 的 refresh() 方法,该方法将向 Spring Cloud Bus 发送一个刷新消息。
最后,我们需要在 Config Service 中添加一个 BusRefreshListener bean,该 bean 将在收到 Spring Cloud Bus 消息时触发配置文件的重新加载。可以使用以下代码来实现:
@Componentpublic class BusRefreshListener implements ApplicationListener { private final ConfigurableApplicationContext context; @Autowired public BusRefreshListener(ConfigurableApplicationContext context) { this.context = context; } @Override public void onApplicationEvent(RefreshRemoteApplicationEvent event) { context.refresh(); } public void refresh() { context.publishEvent(new RefreshRemoteApplicationEvent(this, "", "")); }}
在这个示例中,我们创建了一个 BusRefreshListener bean,该 bean 实现了 ApplicationListener 接口,并在收到 RefreshRemoteApplicationEvent 事件时触发了应用程序上下文的刷新。我们还添加了一个 refresh() 方法,该方法将创建一个新的 RefreshRemoteApplicationEvent 事件,并将其发布到应用程序上下文中。
配置 Client Service
在 Client Service 中,我们需要添加一个依赖于 Config Service 的组件,并在收到 Spring Cloud Bus 消息时重新加载配置文件。
可以在 application.yml 文件中添加以下配置:
spring: cloud: config: uri: http://localhost:8888 name: client-service bus: enabled: true trace: enabled: true rabbit: enabled: true
在这个示例中,我们将 Client Service 配置为使用 Config Service 中存储的配置文件。我们还启用了 Spring Cloud Bus 和 RabbitMQ 支持。
最后,我们需要在 Client Service 中添加一个 RefreshScope bean,该 bean 将在收到 Spring Cloud Bus 消息时重新加载应用程序的配置文件。可以使用以下代码来实现:
@Component@RefreshScopepublic class ConfigComponent { @Value("${message:Hello World!}") private String message; public String getMessage() { return message; }}
在这个示例中,我们创建了一个 ConfigComponent bean,该 bean 带有一个 @RefreshScope 注解,以便它可以在收到 Spring Cloud Bus 消息时重新加载。我们还将一个名为 message 的属性注入到该 bean 中,并在 getMessage() 方法中返回该属性的值。
关键词:
- Spring Cloud Bus在服务之间发送和接收消息示例
- 算力概念午后拉升,中科曙光涨超8%
- 边境怎么判断敌人武器类型
- 午评:沪指震荡微跌,保险、银行等板块拉升,半导体板块大幅下挫 视焦点讯
- 魔兽争霸剑圣台词_魔兽争霸剑圣
- 铖联科技完成2.36亿元B轮融资
- 环球最资讯丨什么花,容易引发过敏?
- 中德产业园一年走出38家“专精特新”企业
- 配发26个乡镇 消防车辆装备器材|热点
- 新年好儿歌_完整歌词请查收
-
世界观热点:江歌妈妈诉林某侮辱、诽谤案一审宣判:被告人被判二年三个月
江歌妈妈诉林某侮辱、诽谤案一审宣判:被告人被判二年三个月
-
支援型潘茜 每日视讯
1、支援型潘茜是手机游戏《扩散性百万亚瑟王》中的一张卡牌。本文到此分享完毕,希望对大家有所帮助。
-
航天电器: 董事会决议公告
航天电器:董事会决议公告
-
天天快看点丨李斯丹妮沐奕杉分手(李斯丹妮个人资料)
1、李斯丹妮(DanyLee),1990年4月26日出生于四川省成都市,中国内地女歌手、演员、模特。2、2、2011年8月,获得湖南卫视选秀节目《快乐女声》全
-
宁波建工:增收不增利,2022年归母净利润同比降16.1%,拟10股派1元
宁波建工4月17日2022年年度报告,2022年实现营业收入218 67亿元,同比增长2 56%;归属于上市公司股东的净
-
学生最适合什么发型?_学生最适合什么发型 当前动态
1、(1)椭圆脸形:是一种比较标准的脸形,好多的发型均可以适合,并能达到很和谐的效果;(2)圆脸形:圆圆的脸给人以温柔
-
全球快讯:“广东好人”谭志明:坚守传统,奔走200公里采购最好的扎狮原料
近年来,广东各地涌现了许多身边好人,诚实守信、见义勇为、敬业奉献、孝老爱亲、助人为乐……这些暖心的善行义举不仅提升城市的文明高度,也
-
武汉为跑友画出一道彩虹_环球播资讯
4月16日上午,汉马选手途经武汉美术馆时一路高喊武汉加油,和市民啦啦队的加油声交相呼应,充满了欢乐的力量时隔三年,汉马归来,备受瞩目。浏
-
少年派剧情详解
少年派剧情详解:精灵活泼的少女林妙妙中考超常发挥,意外考入重点高中,妈妈王胜男扬眉吐气。高一住校,挣脱妈妈掌控的林妙妙如鱼得水,结交
-
天天通讯!110网络报警平台_网络诈骗报警平台
1、首先,在手机上打开国家反诈骗中心。2、点击“首页”,然后点击“我要举报”。3、在“我要举报”中点击“诈骗电话”。4、
X 关闭
战时防疫用!宝安首批667间集中居住板房移交管理
西安新增本土确诊病例150例 详情发布
广东最低气温跌至-6℃现冰挂 部分道路及海上交通受影响
“2022科学跨年系列活动”启动 提高公众对科学类流言“免疫力”
珠科院多举措助力大湾区抗旱防咸保供水
X 关闭
得知西安疫情防控“升级” 男子夜骑共享单车回咸阳淳化
中国医生将任SIU主席背后:从追随者同行者到引领者
海南省通报政法队伍教育整顿成果
云南两地发现核酸阳性人员 西安实行最严格的社会面管控
广东梅州大埔中央红色交通线沿线发现多株百岁古树