【世界播资讯】Spring Cloud Bus在服务之间发送和接收消息示例

2023-04-17 17:35:37 | 来源:腾讯云

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

环球播报:港圈“斯文败类”天花板成功洗白?!网友:对不起,我就喜欢坏的

环球滚动:工程施工形象进度表_工程形象进度怎么写

当前资讯!eBay汽摩配推出第二季度高潜力车型促销活动

信息:海尔生物医疗旗下鸿鹄航空科技获科技型、创新型中小企业两项认定

【环球新视野】不设区的市每几年举行一次_不设区的市

今日热文:圣诞精灵化妆风格

环球视点!周六福铂金多少钱一克(2023年04月17日)参考价格

当前通讯!苏丹喀土穆再次发生激烈战斗

当前播报:冯功:30 秒懂车《懂车影业》启程 致胜场景化营销

世界快看:Redis 数据类型及操作-HyperLogLog

天天最新:燕京啤酒2022营收132亿、英国精酿厂破产数创新高

当前滚动:m2是什么意思通俗讲_m2是什么意思

每日热讯!继续播放莫菁11_你知道莫菁的近况吗

全球今热点:大同市气象局发布沙尘蓝色预警【Ⅳ级/一般】【2023-04-16】

最新新闻

【世界播资讯】Spring Cloud Bus在服务之间发送和接收消息示例

环球播报:港圈“斯文败类”天花板成功洗白?!网友:对不起,我就喜欢坏的

环球滚动:工程施工形象进度表_工程形象进度怎么写

当前资讯!eBay汽摩配推出第二季度高潜力车型促销活动

信息:海尔生物医疗旗下鸿鹄航空科技获科技型、创新型中小企业两项认定

【环球新视野】不设区的市每几年举行一次_不设区的市

今日热文:圣诞精灵化妆风格

环球视点!周六福铂金多少钱一克(2023年04月17日)参考价格

当前通讯!苏丹喀土穆再次发生激烈战斗

当前播报:冯功:30 秒懂车《懂车影业》启程 致胜场景化营销

世界快看:Redis 数据类型及操作-HyperLogLog

天天最新:燕京啤酒2022营收132亿、英国精酿厂破产数创新高

当前滚动:m2是什么意思通俗讲_m2是什么意思

每日热讯!继续播放莫菁11_你知道莫菁的近况吗

全球今热点:大同市气象局发布沙尘蓝色预警【Ⅳ级/一般】【2023-04-16】

【环球速看料】“送法下乡”暖民心 普法宣传零距离

世界通讯!奥维尔号_奥尔号

全球信息:本田mpv有哪几款(本田mpv有哪几款多少钱)

全球聚焦:斯匹兹卑尔根群岛_关于斯匹兹卑尔根群岛简介

精选!创5大纪录!NBA头号黑马击碎魔咒,现场球迷沸腾,库里沮丧离场

当前信息:70分4板7助!第一次季后赛就压制水花,国王1-0捡到宝了

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

世界快消息!穆勒:克拉马里奇一碰就转得像旋转木马 但算了那是我们自找丢球

【全球速看料】北京地铁将逐步缩短双休日发车间隔

当前快看:西媒:巴黎有意今夏引进费耶诺德中场柯克屈

世界最新:乌克兰提议就粮食运输与波兰达成新的谅解。乌克兰表示,波兰对其粮食进口的禁令违反了协议。

焦点要闻:凤鸣壶紫砂壶原理 凤鸣紫砂壶壶原理是怎样的

焦点消息!雨衣怎么洗才干净_雨衣如何清洗才干净

世界简讯:SNK推出40周年纪念游戏机 内置《拳皇》多款NEOGEO经典游戏

世界时讯:未提出让条件 谦寻回应杭州拿地:将继续扎根杭州、扎根滨江