品牌 资讯 搭配 材料 时尚 热点 行业 首饰 玉石 行情

使用 Spring Cloud Bus 和 Spring Cloud Stream 集成实现基于消息的事件驱动-天天看热讯

2023-04-23 02:57:28 来源:腾讯云

基于消息的事件驱动是一种常见的微服务架构设计模式,它将不同的微服务之间通过消息进行通信,实现松耦合、高可伸缩性和高可靠性。在这种架构下,每个微服务都是独立的,它们可以在消息传递的过程中进行异步操作,这使得整个系统的性能得到了很大的提升。

在 Spring Cloud 中,我们可以使用 Spring Cloud Bus 和 Spring Cloud Stream 集成来实现基于消息的事件驱动。Spring Cloud Bus 是一个消息总线,它可以在微服务之间传递消息,可以将所有微服务视为一个整体,向所有微服务广播消息或向指定的微服务发送消息。Spring Cloud Stream 是一个消息驱动的微服务框架,它可以轻松地将消息通道与微服务进行集成。


(资料图)

准备工作

首先,我们需要在 pom.xml 文件中添加以下依赖:

    org.springframework.cloud    spring-cloud-starter-bus-amqp    org.springframework.cloud    spring-cloud-stream-binder-rabbit

这些依赖将会引入 Spring Cloud Bus 和 Spring Cloud Stream 的相关库,并且使用 RabbitMQ 作为消息代理。如果你想使用其他消息代理,可以根据实际需求进行修改。

创建消息通道

在这个例子中,我们将创建一个名为 myChannel 的消息通道,用于在微服务之间传递消息。在创建消息通道之前,我们需要在 application.yml 文件中添加以下配置:

spring:  cloud:    stream:      bindings:        myChannel:          destination: myChannel

这个配置将创建一个名为 myChannel 的消息通道,并将它绑定到 RabbitMQ 的 myChannel 队列上。现在,我们可以在代码中使用 @Input 和 @Output 注解来定义输入和输出消息通道了。

public interface MyChannel {    String INPUT = "myInput";    String OUTPUT = "myOutput";    @Input(INPUT)    SubscribableChannel input();    @Output(OUTPUT)    MessageChannel output();}

这个接口定义了一个名为 MyChannel 的消息通道,其中包括一个名为 myInput 的输入消息通道和一个名为 myOutput 的输出消息通道。

发布消息

在这个例子中,我们将创建一个名为 MyController 的控制器类,该类将发布一个名为 MyMessage 的消息到 myOutput 消息通道上。

@RestControllerpublic class MyController {    @Autowired    private MessageChannel output;    @PostMapping("/send")    public void sendMessage(@RequestBody MyMessage message) {        output.send(MessageBuilder.withPayload(message).build());    }}

这个控制器类注入了名为 output 的 MessageChannel,用于向 myOutput 消息通道发送消息。在 sendMessage 方法中,我们通过 MessageBuilder 创建一个名为 message 的 MyMessage 消息,然后通过 output.send 方法将这个消息发送到 myOutput 消息通道上。

处理消息

在这个例子中,我们将创建一个名为 MyListener 的监听器类,该类将监听 myInput 消息通道上的消息,并将消息打印到控制台上。

@EnableBinding(MyChannel.class)public class MyListener {    @StreamListener(MyChannel.INPUT)    public void handleMessage(MyMessage message) {        System.out.println("Received message: " + message);    }}

这个监听器类使用 @EnableBinding 注解将 MyChannel 消息通道绑定到 Spring Cloud Stream 上。在 handleMessage 方法中,我们使用 @StreamListener 注解监听 myInput 消息通道上的消息,当有消息到来时,Spring Cloud Stream 将自动将消息转换为 MyMessage 类型,并将其传递给 handleMessage 方法进行处理。在这个例子中,我们只是简单地将消息打印到控制台上,你可以根据实际需求进行修改。

运行测试

现在,我们已经创建了消息通道、发布了消息和处理了消息,我们可以启动应用程序并测试它了。首先,我们需要在终端窗口中启动 RabbitMQ,执行以下命令:

cssCopy codedocker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

这个命令将启动一个名为 rabbitmq 的容器,并将其映射到本地主机的 5672 和 15672 端口上。现在,我们可以启动应用程序并访问 http://localhost:8080/send发送消息了。在控制台中,你应该可以看到类似下面的输出:

Received message: MyMessage{id=1, content="Hello, world!"}

这表明消息已经成功传递到了 myInput 消息通道,并被 MyListener 监听到并处理了。

标签:

(责任编辑:)

相关文章

使用 Spring Cloud Bus 和 Spring Cloud Stream 集成实现基于消息的事件驱动-天天看热讯

​基于消息的事件驱动是一种常见的微服务架构设计模式,它将不同的微服务之间通过消息进行通信,实现松耦合、

2023-04-23 02:57:28

“江南忆”组合现身杭州南站 为啥这么多亚运小记者都来了

​现场亚运小记者画的画。拍友陈晓摄“我要画一列很长很长的火车,一路开到杭州!”“我要画钱塘江两岸的高楼

2023-04-23 02:46:33

怎么在excel中做数据分析_怎样用 Excel 做数据分析-全球报道

​1、用Excel做数据分析:1 打开原始数据表格,制作本实例的原始数据要求单列,确认数据的范围。2、本实例为

2023-04-23 01:39:05

宝马MINI冰激凌事件持续发酵,某公司要求员工换掉宝马,否则开除

​上海车展宝马MINI冰激凌事件持续发酵中,起因是上海车展宝马MINI的展台,工作人员只给外国人发冰激凌,没有

2023-04-23 01:25:48

南非一家十口在睡梦中被杀死

​当地时间2023年4月21日,南非彼得马里茨堡,警察转移遇难者遗体。澎湃影像图当地时间4月21日,南非东部夸祖

2023-04-23 00:59:42

微微一笑很倾城 百度网盘电视剧_微微一笑很倾城电视剧百度云网盘

​1、《微微一笑很倾城》是根据顾漫同名小说改编,由林玉芬执导,郑爽、杨洋、毛晓彤、白宇、牛骏峰、郑业成

2023-04-22 23:58:16

安全帽的使用年限是几年 安全帽的使用年限

​今天来聊聊关于安全帽的使用年限是几年,安全帽的使用年限的文章,现在就为大家来简单介绍下安全帽的使用年

2023-04-22 23:19:44

世界短讯!商务部研究院电商所:跨境电商出口合规将呈现“三化”特点

​商务部研究院电商所:跨境电商出口合规将呈现“三化”特点:据证券时报,商务部研究院电子商务研究所今日在

2023-04-22 22:37:16

智能防疫员_对于智能防疫员简单介绍-世界播资讯

​1、智能防疫员,为智能安全服务机器人。2、该系统是基于人工智能、物联网、云计算及大数据技术的全新一代智

2023-04-22 22:04:23

探寻城市地质秘密 重庆开展世界地球日科普活动

​探寻城市地质秘密重庆开展世界地球日科普活动

2023-04-22 21:43:43

两位欧洲议员访华“大开眼界” 速看料

​新华社北京4月21日电“这次中国行让我们大开眼界,中国所取得的成就令人赞叹。”“我们所到之处都充满活力

2023-04-22 21:07:15

全天候、多元化!湖州南浔:打造长三角亲子乐园

​全天候、多元化!湖州南浔:打造长三角亲子乐园

2023-04-22 20:33:48

什么地方开口说话要付钱?_什么地方开口说话要付钱 天天速看料

​1、1。2、4。3、6。4、电话[英语:Telephone,出自希腊语τῆλε(tēle,意为“远”)和φωνή(phō

2023-04-22 19:49:00

高速铁路信号技术 修订版_关于高速铁路信号技术 修订版简述-天天新要闻

​小伙伴们,你们好,今天小夏来聊聊一篇关于高速铁路信号技术修订版,关于高速铁路信号技术修订版简述的文章

2023-04-22 19:43:10

哪吒汽车于苏州设新公司,含广播电视节目制作经营业务_环球观察

​哪吒汽车于苏州设新公司,含广播电视节目制作经营业务

2023-04-22 19:40:21

咸鱼干的做法大全视频_咸鱼干的做法 世界动态

​1、1 将鱼剖开,多去水分,按鱼盐比为1:004加盐,腌制品揉制:如果偏爱麻辣口味,可加入适量辣椒粉和胡椒粉

2023-04-22 19:09:41

AI海报引争议,到底谁在惶惶不安?-时讯

​原标题:AI海报引争议,到底谁在惶惶不安?“如何引爆舆论,吸引公众的眼球?”这个让无数电影宣发点灯熬油

2023-04-22 18:13:26

当前资讯!小米手机死机怎么解决_小米手机死机开不了机怎么办

​1、处理建议如下:检查是不是手机主板短路,如果是那么就需要更换主板。2、2、检查是不是手机硬件设施损坏

2023-04-22 17:52:11

33分16板6助!火箭交易果然赌赢了,新帅二选一,哈登或回休斯顿

​33分16板6助!火箭交易果然赌赢了,新帅二选一,哈登或回休斯顿,火箭队,休斯顿,nba,沃格尔,76人队,火箭交易

2023-04-22 17:10:56

海南省海口市发布雷雨大风黄色预警-世界球精选

​海口市气象台2023年04月22日14时40分发布雷雨大风黄色预警信号:受对流云团影响,我市石山镇、永兴镇、东山

2023-04-22 17:08:54

乌兹别克斯坦政府和企业家代表团参观新疆农业博览园 纷纷驻足观看拍照

​4月21日下午,乌兹别克斯坦政府和企业家代表团参观了新疆农业博览园,代表团成员看到流水化作业、无土栽培

2023-04-22 16:38:35

天天讯息:网络影视艺术指导中心于杭州启动

​4月21日,为推动网络视听节目内容创作高质量发展,由浙江省广播电视局指导,中国网络视听节目服务协会专家

2023-04-22 16:19:44

变更法人股东会议决议怎么填写_变更法人股东会决议怎么写

​1、有限公司股东会决议会议时间:会议地点:参加会议人员:会议通知情况及股东到会情况:会议议题:协商表

2023-04-22 15:50:00

追梦:我不知道还能因为7年前的二级恶犯禁赛

​追梦:我不知道还能因为7年前的二级恶犯禁赛,哈登,追梦,唱片,华语音乐,克拉克斯顿,二级恶犯禁赛,流行音乐专

2023-04-22 15:31:21

西藏林芝开展可燃物踏查 天天热闻

​(西绕拉翁)当前西藏林芝气温逐渐回升,林内腐殖层较厚,森林草原防火灭火任务形势更加严峻。西绕拉翁摄  

2023-04-22 14:41:47

汽车价格战带来行业洗牌,汽车人路在何方? 世界新消息

​本文来源:时代财经作者:罗韬图片来源:图虫创意曾经热爱社交的85后汽车人旷野,从今年开始有些沉默寡言。

2023-04-22 14:48:54

来自40万米高空的凝望!200余颗在轨遥感卫星守护“美丽中国”

​今天(22日)是第54个世界地球日,这是一个专门为世界环境保护而设立的节日。近年来,我国不断加大生态修复

2023-04-22 13:59:52

预警!猪价“涨不动”,豆粕行情“跳水”,羊价惨淡,发生了啥? 热门

​在国内农产品市场,近期,多种农产品价格走势分歧,其中,生猪市场,猪价止跌上涨,市场呈现波动偏强的走势

2023-04-22 13:54:25

育碧重返Steam:《远哭6》《彩6异种》上Steam页面-环球百事通

​育碧重返Steam。旗下游戏《孤岛惊魂6》《极限国度》《彩虹六号:异种》《地产大亨:狂乐派对》的Steam商店

2023-04-22 13:06:03

【世界独家】英国代购什么东西最划算_英国代购什么最划算

​1、赚钱多的就是奢侈品,但前提你有客户需求。2、打折店的名牌包包,衣服皮鞋什么的,价格也就是咱正品店要

2023-04-22 12:48:57