
★十佳钟榜★★听钟阁(排名不分先后)武侯哑钟堂【四周年庆典】兰
腾讯云 2023-04-21 16:10:52
(资料图片仅供参考)
下面是一个完整的示例,演示如何使用 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
★十佳钟榜★★听钟阁(排名不分先后)武侯哑钟堂【四周年庆典】兰
现代快报讯(记者 张瑜)9月9日,国家统计局南京调查队发布8月份居民
现在的迈燕片区,区域内轨道交通、过江隧道、城市快速道路组成的交通网
9月8日,安记食品(603696)融资买入99 18万元,融资偿还155 01万元,
今年政府开放月期间,徐汇区以“15分钟社区生活圈”为主题,发布“13+1
截至2023年9月8日收盘,海陆重工(002255)报收于5 34元,上涨0 38%,换
2-0!法国欧预赛5连胜领跑,姆巴佩助攻吉鲁伤退,皇马后腰世界波,皇马,
根据德国联邦统计局当地时间8日发布的最终数据,德国8月通货膨胀率为6
自2011年起,每年上海旅游节都会推出为期一周的景区(点)门票半价优惠
【奥普光电今日涨停三机构净卖出7643 33万元】奥普光电今日涨停,成交
不限行。成都节假日车辆不限行。成都不限行的时间为:(一)每周六、周日
加拿大自然资源部长乔纳森·威尔金森当地时间7日说,加拿大9月温暖干燥
9月8日,上海市土地交易市场发布今年第三批次首轮7幅商品住房用地出让
近日,知名游戏公司贝塞斯达的总监陶德·霍华德因其在游戏制作方面的杰
雄安北海幼儿园、雄安史家胡同小学、北京四中雄安校区是北京市以“交钥