使用 Spring Cloud Bus 在微服务之间传递消息示例
(资料图片仅供参考)
下面是一个完整的示例,演示如何使用 Spring Cloud Bus 在微服务之间传递消息。该示例包含两个微服务,一个是消息发送者,另一个是消息接收者。
首先,我们需要创建一个 Spring Boot 项目,并添加 Spring Cloud Bus 和 RabbitMQ 的依赖。在 pom.xml 文件中添加以下依赖:
org.springframework.cloud spring-cloud-starter-bus-amqp 2.2.1.RELEASE org.springframework.boot spring-boot-starter-web 2.2.1.RELEASE org.springframework.boot spring-boot-starter-amqp 2.2.1.RELEASE
在创建的项目中,我们定义了一个消息类型 MyMessage,该类型包含一个字符串类型的 content 属性。
javaCopy codepublic class MyMessage implements Serializable { private static final long serialVersionUID = 1L; private String content; public MyMessage(String content) { this.content = content; } public String getContent() { return content; } public void setContent(String content) { this.content = content; }}
然后,我们创建了一个消息发送者,该发送者使用 Spring Cloud Bus 发送消息。
@RestControllerpublic class MyController { @Autowired private MessageSender messageSender; @PostMapping("/send") public void sendMessage(@RequestBody MyMessage message) { messageSender.sendMessage(message); }}@Servicepublic class MessageSender { private static final Logger LOGGER = LoggerFactory.getLogger(MessageSender.class); @Autowired private MessageChannel output; public void sendMessage(MyMessage message) { LOGGER.info("Sending message: {}", message.getContent()); output.send(MessageBuilder.withPayload(message).build()); }}@Servicepublic class MessageListener { private static final Logger LOGGER = LoggerFactory.getLogger(MessageListener.class); @StreamListener(target = Sink.INPUT, condition = "headers["type"]=="MyMessage"") public void handleMessage(MyMessage message) { LOGGER.info("Received message: {}", message.getContent()); }}
在这个例子中,我们创建了一个 MyController 类,该类定义了一个发送消息的 API 接口,接收一个 MyMessage 类型的参数,将参数传递给 MessageSender 类的 sendMessage() 方法。
MessageSender 类定义了一个 sendMessage() 方法,该方法使用 Spring Cloud Stream 的 output 消息通道发送消息。
MessageListener 类定义了一个 handleMessage() 方法,该方法使用 @StreamListener 注解监听 Spring Cloud Stream 的 input 消息通道,并根据消息类型过滤消息。当有符合条件的消息到达时,handleMessage() 方法会被自动调用,处理接收到的消息。
在以上代码中,我们使用了 @Autowired 注解自动注入了 MessageSender 和 MessageListener 类,这是 Spring Boot 自带的依赖注入功能。
运行应用程序后,我们可以使用 Postman 工具或其他 HTTP 工具发送 HTTP POST 请求,将消息发送到消息发送者的 API 接口,如下所示:
POST http://localhost:8080/send HTTP/1.1Content-Type: application/json{ "content": "Hello, World!"}
当消息到达时,消息接收者会打印消息内容,如下所示:
2023-04-19 09:24:47.836 INFO 29740 --- [afka-listener-1] com.example.demo.M
关键词:
- 国家移民管理局暂停签发韩国、日本公民来华口岸签证及72/144小时过境免签-环球滚动
- 港股异动 | 药明生物(02269)升7% 近三月北水增仓超5个百分点 机构料全年业绩持续高增
- 当前快报:美国小企业乐观度降至近十年来倒数第二
- 英文爱情的句子唯美句子大全(精选259句)
- 粤港澳大湾区中小企业报告:逾6成中小企业预期2023年将投放可观资金于大湾区_天天热文
- 山西泽州警方摧毁省级目标贩毒网络 17名毒贩累计贩毒超30公斤 今日热门
- 安逸花网贷8万逾期还不起我会不会被起诉 全球快播
- 有意思小周刊(2023.01.09):一文详解|影响成长的关键思考_世界消息
- 当前要闻:电子车牌板块1月9日跌0.11%,易华录领跌,主力资金净流出6738.9万元
- 省呗网贷逾期14年多久会上征信
-
助力旅发大会 打造优美人居环境
助力旅发大会打造优美人居环境
-
世界实时:酸辣粉的做法及配方视频 酸辣粉的做法及配方
今天来聊聊关于酸辣粉的做法及配方视频,酸辣粉的做法及配方的文章,现在就为大家来简单介绍下酸辣粉的做法
-
武汉出台十项柔性监管举措助力经营主体合规经营 世界报道
武汉出台十项柔性监管举措助力经营主体合规经营---湖北日报讯(记者刘畅、通讯员姚重)为进一步发挥信用机
-
焦点快看:吃姜片的好处和坏处 吃姜片的好处和坏处有哪些呢
1、吃姜片的好处。(1)姜片是温性的,所以在一定程度上可以活血化瘀、通络,起到一定的温经散寒的功效。对
-
每日看点!繁体字网名_二繁体
1、在百度上搜索后点击进入。2、在下面的转换框中输入单词“繁体”。3、在以下位置单击[简体中文]。4、你可
-
T99找回奔腾逝去的岁月
现在,汽车已经变得越来越普及,几乎每家每户都有一辆车。那么这么多车,我们在使用的过程中肯定会遇到各种
-
光辉岁月下载粤语_光辉岁月下载mp3
1、使用百度网盘免费分享给你,链接是:提取码:8xxs《光辉岁月》是中国香港摇滚乐队Beyond演唱的一首歌曲
-
冬青什么时候扦插(龟甲冬青什么时候扦插)_世界实时
1、冬青的扦插四季都可进行,适宜于春末夏初和夏末秋初进行。2、插穗长6~8cm,剪去下部叶片,只留1~2叶片
-
太快了⚡武磊第87分钟飞速前插,单刀轻松破门,完成绝杀!|天天关注
直播吧4月22日讯中超第2轮,海港vs深圳。比赛第87分钟,海港反击,武磊高速前插,接保利尼奥传球形成单刀,
-
深圳:中介要严格按指导价公示,否则将约谈 世界头条
记者获悉,深圳相关部门已向部分中介机构发通知,要求其平台对外展示的房源价格必须严格按照指导价进行公示
X 关闭
使用 Spring Cloud Bus 在微服务之间传递消息示例
第十五届“书香雨花”读书节今天启动 发布2条书香文旅线路
2021年中国家族_中国10大家族排行榜|全球今日讯
世界微资讯!天风宏观:创投泡沫破灭才是美国真正值得讨论的问题
马兴田豪宅_马兴田的简介
X 关闭
得知西安疫情防控“升级” 男子夜骑共享单车回咸阳淳化
中国医生将任SIU主席背后:从追随者同行者到引领者
海南省通报政法队伍教育整顿成果
云南两地发现核酸阳性人员 西安实行最严格的社会面管控
广东梅州大埔中央红色交通线沿线发现多株百岁古树