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在服务之间发送和接收消息示例
腾讯云 2023-04-18
-
嘉峪关城楼景区团餐后厨设备采购项目(二次)废标公告 世界今日报
甘肃经济信息网 2023-04-18
-
今日聚焦!2023上海车展:北京现代MUFASA车展亮相,N品牌即将引入
凤凰网 2023-04-18
-
白油膏商品报价动态(2023-04-18)_全球速讯
生意社 2023-04-18
-
风电无阻!东风5年前推出的eπ今日“列”队完毕!
盖世汽车快讯 2023-04-18
-
天天简讯:YG否认朴彩英与姜栋元恋情 曾被曝同框项链传绯闻
新浪娱乐 2023-04-18
-
午评: 胆小的已经夺路而逃!但老手告诉你“A股还会涨”!2大理由! 天天即时看
云掌财经来自股市的猩猩 2023-04-18
-
每日快报!2023上海车展:劳斯莱斯闪灵( Spectre)亮相
网通社 2023-04-18
-
光威复材董秘回复:碳纤维是一种个性化材料,不同厂家的同型号产品具有各自的个性化特点_当前最新
证券之星 2023-04-18
-
陕西煤业等新设投资企业 注册资本5.61亿
云财经 2023-04-18
-
Spring Cloud Bus在服务之间发送和接收消息示例
腾讯云 2023-04-18
-
嘉峪关城楼景区团餐后厨设备采购项目(二次)废标公告 世界今日报
甘肃经济信息网 2023-04-18
-
今日聚焦!2023上海车展:北京现代MUFASA车展亮相,N品牌即将引入
凤凰网 2023-04-18
-
白油膏商品报价动态(2023-04-18)_全球速讯
生意社 2023-04-18
-
风电无阻!东风5年前推出的eπ今日“列”队完毕!
盖世汽车快讯 2023-04-18
-
天天简讯:YG否认朴彩英与姜栋元恋情 曾被曝同框项链传绯闻
新浪娱乐 2023-04-18
-
午评: 胆小的已经夺路而逃!但老手告诉你“A股还会涨”!2大理由! 天天即时看
云掌财经来自股市的猩猩 2023-04-18
-
每日快报!2023上海车展:劳斯莱斯闪灵( Spectre)亮相
网通社 2023-04-18
-
光威复材董秘回复:碳纤维是一种个性化材料,不同厂家的同型号产品具有各自的个性化特点_当前最新
证券之星 2023-04-18
-
陕西煤业等新设投资企业 注册资本5.61亿
云财经 2023-04-18
-
福建厦门发布暴雨红色预警 厦漳轮渡暂时停航
央视新闻 2023-04-18
-
全国完成水利建设投资同比增76.2%
人民日报 2023-04-18
-
世界快讯:VERTU专卖店/新款 系列现货门店地址
中关村在线 2023-04-18
-
宜安科技(300328):4月17日北向资金增持2.43万股
证券之星 2023-04-18
-
每日头条!天龙八部手游珍兽怎么获得(天龙八部手游如何获得珍兽)
互联网 2023-04-18
-
突发!英国首相遭调查!
北晚在线 2023-04-17
-
天天观焦点:张小泉:聘任平燕娜担任公司副总经理
北京商报 2023-04-17
-
智慧电厂、光伏一体……海南万宁气电项目科技护航自贸港“绿色”发展 微动态
南海网 2023-04-17
-
AI时代的科技新范式:如何重新定义生产力?【4月上海线下大师课报名启动!】|环球观焦点
华尔街见闻 2023-04-17
-
百度何俊杰:AI引领营销领域“代际革命”,为车企打造最先进生产力工具-播报
砍柴网 2023-04-17
-
什么是累计凭证账户_什么是累计凭证-天天快看点
科学教育网 2023-04-17
-
【环球聚看点】河南省2023年中招考试时间及方案
出国留学网 2023-04-17
-
内蒙古一季度特高压通道外送电量311亿千瓦时 创历史新高
央视新闻客户端 2023-04-17
-
《文字王者》平价餐厅帮强哥把餐费砍到10块通关攻略
游戏资讯网 2023-04-17
-
环球头条:平安证券给予源杰科技推荐评级,国产光芯片领先企业,持续受益于通信网及算力网建设
每日经济新闻 2023-04-17
-
头条:院系是什么意思怎填专业吗
壹壹高考网 2023-04-17
-
【环球聚看点】2023年北京国际电影节排片表查询入口公布
本地宝 2023-04-17
-
环球看点!国金证券:给予豪悦护理买入评级
证券之星 2023-04-17
-
盯盘:3股均线盘中出现黄金交叉 报道
中财网 2023-04-17
-
OpenAI新生成模型开源炸场!比Diffusion更快更强,清华校友宋飏一作
猿大侠 2023-04-17