天天简讯:使用 Spring Cloud Bus 和 Spring Cloud Stream 集成实现基于消息的事件驱动
基于消息的事件驱动是一种常见的微服务架构设计模式,它将不同的微服务之间通过消息进行通信,实现松耦合、高可伸缩性和高可靠性。在这种架构下,每个微服务都是独立的,它们可以在消息传递的过程中进行异步操作,这使得整个系统的性能得到了很大的提升。
在 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 监听到并处理了。
标签:
精彩推送
世界快资讯丨手机qq怎么发邮件怎样添加附件(手机qq怎么发邮件)
1、要将手机QQ上的文件用手机发邮件出去,需要你的手机上有已经注册登录好的QQ邮箱APP。2、方法如下:打开
实时焦点:股票行情快报:长园集团(600525)4月21日主力资金净卖出431.88万元
截至2023年4月21日收盘,长园集团(600525)报收于5 66元,下跌2 92%,换手率1 88%,成交量24 6万手,成交额1 41亿元。
城地香江(603887.SH)发布2022年度业绩,扭亏为盈至259.42万元 全球要闻
智通财经APP讯,城地香江(603887 SH)发布2022年年度报告,报告期内,公司实现营业收入26 84亿元,同比下降7
新闻快讯
X 关闭
X 关闭
新闻快讯
- 天天简讯:使用 Spring Cloud Bus 和 Spring Cloud Stream 集成实现基于消息的事件驱动
- “读书之美”系列思政课|孔子的智慧-环球热议
- 百利天恒:BL-M11D1用于治疗急性髓系白血病获得I期临床试验批准 报道
- 环球报道:会畅通讯:公司已有针对企业客户的AI垂直小模型
- 女性染上“性瘾”是一种怎样的体验?医生直言:或和你想象得不同-天天亮点
- 2022年成年国民综合阅读率持续稳定增长 阅读量保持总体稳定-天天热资讯
- 世界聚焦:衡阳民事合同纠纷律师收费明细
- 李易峰演过的综艺节目_李易峰演过的电影
- 招商银行朝朝盈怎么开通?招商银行怎么取消朝朝盈?-世界热议
- 华侨城A收深交所问询函:要求说明2022年净利大额亏损、大幅计提存货跌价原因等11个问题
- 焦点关注:云南多地发布干旱橙色预警 其中昆明、大理、丽江等地区有特旱
- 我市万人有效发明专利拥有量7.27件_焦点报道
- 世界关注:2023天猫好房城市发展部全国合作伙伴交流会在桂林召开
- 教育时评|做实做细就业指导服务 天天视讯
- 教育时评|做实做细就业指导服务|时快讯
- 努比亚Z50山系生活版正式公布 五一全系立减500元_天天速看
- 商务部副部长王受文:中国有能力加入CPTPP
- 早睡早起补气 保暖通风祛湿
- 青海,万余干部“扑下身子”助农桑
- 当前热议!住房城乡建设部就1项国家标准和4项行业标准修订公开征求意见
- 全球今热点:1dx2参数_1dx
- 世界快看:阳历11月30日是什么星座_11月30日是什么星座
- 标签打印软件如何批量制作Maxicode码 环球热点评
- 费拉里公式表示的数学意义(费拉里公式)
- 丰田社长:不会一举将重心转移到纯电动汽车 要维持“全方位战略”_每日时讯
- 王楚钦正式顶替马龙?复仇日本一哥,三足鼎立,2张奥运门票给谁|焦点热门
- 【聚看点】网友:有人说威少在NBA没位置了 威少弟弟回复:我也听说了
- 天天关注:河北建设于贵州成立建筑工程公司,注册资本4000万元
- 公务员工资全额数字人民币发放?常熟拟5月推行,究竟是怎么回事? 焦点讯息
- 杜锋要小心了,马尚竟被大汉反超,如调整不回来了,季后赛危险了
- 每日动态!过年的故事(过年的柴火)
- 当前热议!昭通仲裁委员会公告
- 躁郁症自测量表在线测试_躁郁症的症状测试题
- 焦点要闻:从无到有、从小到大、从弱到强 数字产业集群加速发展
- 饼干中糖蜜的替代品
- 天天视讯!第81届“教装展”南昌举行 业界探索贡献AI教育解决方案
- 日本民众集会要求返还从中国掠夺的文物
- 判断一个人有没有管理能力,就看这2点
- 驱逐舰07亮相,搭载混动总成,纯电续航达200km 全球播资讯
- 港剧爱·回家之开心速递分集剧情版(1934-1940集)21
- 场地试驾哈弗枭龙MAX:混动四驱白菜价?-每日动态
- 属虎的名人和明星_属虎的名人?
- Consul 的架构和设计思路
- 幸福工程家政类职业技能系列公益培训正式启动_全球要闻
- 每日资讯:-err unable to log on出现这个怎么解决_苹果unable to download app什么意思
- 弯板式动态汽车衡_弯板
- 海参什么季节吃最好的 哪个季节吃海参比较好
- 环球观天下!光大中证同业存单AAA指数7天持有基金经理变动:增聘沈荣为基金经理
- 环球热头条丨2-1,3-3!足坛悲喜1夜!梅西助攻姆巴佩,阿森纳爆冷,曼城收大礼
- 海南琼中黎苗同胞欢庆传统节日“三月三”