(相关资料图)
下面是一个完整的示例,演示如何使用 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
标签:
下面是一个完整的示例,演示如何使用SpringCloudBus在微服务之间传...
你想了解最新最前沿的汽车资讯吗?你想了解国产神车的最新相关报道...
怪物猎人曙光中的狂蚀珠要怎么制作呢?可能很多玩家还不太清楚这个...
濮耐股份营业规模持续扩大2022年归母净利润同比增长174 18%2023-04...
本报记者吴文婧4月20日,熊猫乳品发布2022年年报,公司全年实现营业...
负极材料和偏光片双轮驱动杉杉股份2022年实现净利26 91亿元2023-04...
思科瑞一季度净利增长24 02%推进检测试验“高端化、精细化、规模化...
天地在线参股公司世优科技推出AI数字人产品——“世优BOTA”2023-04...
2018年4月22日人力资源社会保障部签发了首张全国统一的电子社保卡五...
为扎实推进“双减”工作的真正落地,全面提高学校语文阅读教学质量...
《环球时报》——吴士存:我在马尼拉感受中菲关系之“变”!这一句...
第133届广交会于4月15日至5月5日分三个展期在广州举办,截至4月19日...
本文由无冕财经(wumiancaijing)整合作者:小冕编辑:陈涧设计:岚...
新发明“电子脑”出现,让猪猪侠如虎添翼,可再度遭遇的挫折又预示...
海运价格回落跨境电商升温华凯易佰业绩增势从去年延续至今年一季度2...
喜相逢面临盈利难、法律纠纷多等困境汽车融资租赁是一门好生意吗?2...
统联精密2022年净利润同比增加98 9%MIM行业渗透率有望提升2023-04-...
本报记者李勇风光股份4月20日晚间披露2022年度报告和2023年一季度报...
煤炭产量创新高带动煤机行业增长山东矿机2022年净利润同比增长88 9...
股价跌40%后,华宝新能红海求生|Update,股价,上市,东方财富,华宝新...
兴业银行上海分行:在咖香中见证业务从交易到交流的“兴动”转变,金...
《魔兽世界》开发者称暴雪正在流失人才:高层一意孤行无视意见介绍...
2023年4月20日19:26 来源:中新网重庆
元宇宙行业发展趋势如何?近日,专业服务机构毕马威中国发布了“X+元...
本报记者张晓玉4月20日晚间,新动力公司发布高级管理人员变动公告,...
本报记者肖艳青4月20日晚间,设研院披露2023年第一季度报告,公司20...
华发独创“优+产品体系”再次焕新5 0启新典礼即将演绎“华发经典”...
*ST运盛审计机构突现“黑天鹅”律师认为公司涉嫌报送虚假材料2023-0...
本报记者吴奕萱4月20日,均普智能发布2022年年报,公司实现营业收入...
学生是现在观影的主力军之一,他们对电影的热情让电影人为之欣喜。...
广告
X 关闭
广告
X 关闭