我们将创建两个微服务:一个是 Order Service,另一个是 Product Service。这两个服务将使用 Spring Cloud Bus 和 RabbitMQ 来进行消息传递。
首先,让我们来创建 Order Service。
(资料图)
@SpringBootApplication@RestController@EnableBinding(Sink.class)public class OrderServiceApplication { private final Logger logger = LoggerFactory.getLogger(getClass()); @StreamListener(Sink.INPUT) public void handle(String message) { logger.info("Received message: {}", message); } @GetMapping("/order") public String placeOrder() { String message = "Order placed"; logger.info("Sending message: {}", message); return message; } public static void main(String[] args) { SpringApplication.run(OrderServiceApplication.class, args); }}
这个应用程序使用 @EnableBinding 注解将 Sink绑定到它的消息代理上。它还使用 @StreamListener 注解来指定消息处理方法。
在 Order Service 中,我们还定义了一个 /order REST 端点。当该端点被调用时,应用程序会向消息代理发送一条消息。该消息将被 Product Service 接收并处理。
接下来,让我们来创建 Product Service。
@SpringBootApplication@RestController@EnableBinding(Source.class)public class ProductServiceApplication { private final Logger logger = LoggerFactory.getLogger(getClass()); private final MessageChannel output; public ProductServiceApplication(Source source) { this.output = source.output(); } @PostMapping("/product") public String addProduct(@RequestBody String product) { String message = "Product added: " + product; logger.info("Sending message: {}", message); output.send(MessageBuilder.withPayload(message).build()); return message; } public static void main(String[] args) { SpringApplication.run(ProductServiceApplication.class, args); }}
这个应用程序使用 @EnableBinding 注解将 Source 绑定到它的消息代理上。它还定义了一个 /product REST 端点,该端点用于添加新产品。
当 /product 端点被调用时,Product Service 会向消息代理发送一条消息,该消息将被 Order Service 接收并处理。
我们已经创建了 Order Service 和 Product Service,接下来让我们运行它们并查看消息传递的结果。
首先,我们需要启动 RabbitMQ 服务器。然后,我们可以使用以下命令分别启动 Order Service 和 Product Service:
mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8081 (Order Service)mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8082 (Product Service)
当这两个服务都已经启动时,我们可以通过访问 Order Service 的 /order 端点和 Product Service 的 /product 端点来测试它们之间的消息传递。
在 Order Service 的控制台输出中,我们应该能够看到类似以下内容的消息:
Received message: Product added: {product name}
这表明 Product Service 成功地向 Order Service 发送了一条消息,并且 Order Service 成功地接收并处理了该消息。
关键词:
配置Spring Cloud Bus并集成消息代理示例 全球微动态
又添一纪录!萨拉赫成为英超左脚进球数最多的球员
小心!毕节多地有蛇出没
博汇股份:2022年归母净利同比增405.37% 拟10转4派1.2元 重芳烃生产装置产能利用率提升
【天天聚看点】2022年度业绩预告不准确 *ST文化及相关当事人受公开谴责
《绝世侠女》第三十二章:捕头立功
【全球热闻】科大讯飞AI学习机T20 Pro精准备考,期中考试的得力助手!
紫金矿业(02899.HK)完成注销160.1万股A股限制性股票
中超:河南平成都蓉城 世界速读
崩坏星穹铁道氪金性价比解析
当前要闻:临近退休,这些问题需要提前弄清!
世界通讯!海沃德:希望黄蜂拿状元签 最疯狂的一次通宵打游戏12小时
【午报】27股涨停!中字头再发力 中移动市值一度超越茅台_当前聚焦
我等你靠近等来海啸入侵是什么歌|今热点
世界热推荐:让“抗癌厨房”不熄火
华仁药业:4月14日融资买入481.92万元,融资融券余额2.15亿元 全球热文
2023年4月14日新交所上海螺纹钢期货结算价_世界看点
第133届广交会:外商云集 看好中国经济
焦点速读:社论:“共享厨房”是公益还是生意,边界不能模糊
安东尼传射?安东尼连续盘带送直塞,达洛特破门助曼联再下一城|天天新要闻
华硕预热无畏 Pro 16 2023 笔记本:i9-13900H + 2.5K 120Hz 屏
云南玉溪山火持续四天后被扑灭,400余名消防队员转战昆明温泉镇火场-每日快播
京东金条逾期了说要上门调查是真去吗?逾期不还的后果是什么? 环球看点
开局之春话经济丨科技赋能、金融支持如何助力粮食产能提升?
德甲提醒:弗赖堡主力前锋格里福已贡献13球+4助攻_滚动
热门看点:测定行政效率的标准主要有_简答测定行政效率的标准
灭滴灵栓剂_灭滴灵
专利超市搭平台把“知识产权”变成“知识产钱”,环同济企业发展动力更强劲
巴西学界商界人士:中国式现代化为拉美发展提供经验借鉴
新资讯:熬猪油怎么做才好_熬猪油怎么做
欧拉开启2.0时代 用技术重新定义女性赛道 焦点速读
穿越火线手游最新cdkey兑换码有哪些(2022最新cdkey兑换码大全)
1158万人!今年高校毕业生数量再创历史新高!找工作更难了...-世界即时
能缓解疲劳的方法_五个方法可快速缓解疲劳
2023年4月15日雅思阅读考试题答案_环球观天下
“北溪”爆炸调查:谁在隐瞒什么?(环球热点) 天天信息
相关新闻