Spring Cloud Bus在服务之间发送和接收消息示例 天天头条

2023-04-18 19:46:33 | 来源:腾讯云

下面是一个使用 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在服务之间发送和接收消息示例 天天头条

吸血鬼幸存者湖中剑怎么进化合成配方分享_天天精选

深圳市工商银行客服电话_深圳市工商银行_天天热资讯

天天热文:江歌妈妈诉网暴者侮辱诽谤案一审宣判:被告人被判二年三个月

环球实时:当日快讯:英媒:空客通知航空公司2024年交付延迟,未说明具体原因

含山县推行装修项目备案制 规范小区装修垃圾 助力打造“最干净城市”|天天快讯

罗博特科涨11.28% 焦点关注

中汽协:一季度汽车制造业固定资产投资同比增长19.0%|每日消息

河钢集团董事长于勇与韩国浦项控股CEO崔正友举行会谈

金融机构专家:中国经济一季度增长呈现出诸多亮点 前景“稳中向好”

双色球23043期晒票:成功者不会满足眼前的成果,会追求更高目标-焦点短讯

永安药业(002365)4月18日主力资金净卖出251.56万元 全球热点

环球速递!今天广州有雷阵雨,即将开启多雨一周

康宗林|热资讯

数字公共外交兴起,中国有优势_天天最新

最新新闻

Spring Cloud Bus在服务之间发送和接收消息示例 天天头条

吸血鬼幸存者湖中剑怎么进化合成配方分享_天天精选

深圳市工商银行客服电话_深圳市工商银行_天天热资讯

天天热文:江歌妈妈诉网暴者侮辱诽谤案一审宣判:被告人被判二年三个月

环球实时:当日快讯:英媒:空客通知航空公司2024年交付延迟,未说明具体原因

含山县推行装修项目备案制 规范小区装修垃圾 助力打造“最干净城市”|天天快讯

罗博特科涨11.28% 焦点关注

中汽协:一季度汽车制造业固定资产投资同比增长19.0%|每日消息

河钢集团董事长于勇与韩国浦项控股CEO崔正友举行会谈

金融机构专家:中国经济一季度增长呈现出诸多亮点 前景“稳中向好”

双色球23043期晒票:成功者不会满足眼前的成果,会追求更高目标-焦点短讯

永安药业(002365)4月18日主力资金净卖出251.56万元 全球热点

环球速递!今天广州有雷阵雨,即将开启多雨一周

康宗林|热资讯

数字公共外交兴起,中国有优势_天天最新

惠州机场巽寮湾城市候机楼电话

“内蒙古好物”走俏消博会-环球今头条

今日视点:如何用麻绳制作凉鞋

2023年字节概念上市公司名单一览(4月18日)_天天滚动

盛迎中东欧来客!这场高规格国际盛会即将启幕 焦点短讯

世界微速讯:奥普家居4月18日盘中涨幅达5%

首批个人养老金基金名录首迎扩容 14只产品新上榜、Y类份额总规模已超20亿元

航行警告!黄海海域举行重大军事活动

nirvana.cn.banana

郑板桥的诗一片两片三四片下一句是什么 一片两片三四片五片六片七八片郑板桥 天天热门

当前聚焦:主要工作成绩及奖惩情况怎么写评初级(主要工作成绩及奖惩情况)

中兴终端:围绕政企市场全面发力 要做“创行者”

当前快看:华为手环8正式发布:屏幕媲美手表、售价269元

视焦点讯!江苏省篮协:坚决拥护对“苏州肯帝亚队”消极比赛的认定及有关处罚

主力资金|牛回速归?主力60亿买入大金融板块,中国平安主力净买入超8亿元 当前最新