(相关资料图)
下面是一个完整的示例,演示如何使用 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在微服务之间传...
1、子洲县苗家坪镇董家湾村扶贫互助资金协会是2017年7月4日登记成立...
4月19日赛莱默惊艳亮相第24届中国环博会,并在展会期间荣获2023中国...
北京时间2018年9月22日,《摔角观察者报》媒体人戴夫·梅尔泽谈及到...
中国经济网北京4月19日讯(记者佟明彪)2023年4月18日22点50分,北...
在逆境中前行是中国家电行业发展特点之一,三年疫情之下,家电行业...
1、开一家美甲店投资不足十万元。2、美甲是一个暴利行业。3、一般市...
1、李诫于元符三年(1100年)完成编修,崇宁二年(1103年)经过皇帝...
天眼查App显示,近日,重庆江双汽车配件有限公司成立,注册资本约1...
据国家突发事件预警信息发布网:海口市气象台2023年04月20日09时02...
华泰证券近日研报表示,一季度终端家具零售温和复苏但弱于社零整体...
日前,巴西总统卢拉结束对中国为期4天的国事访问,带着与中方共同深...
1、很讨厌一个人怎么办处理呢? 人生在世,不如意的事十有八九...
房产方面的知识对于多数小伙伴们是一般都不太懂的,那么如今买房卖...
1、在初音未来的设计者最初的设计中初音未来的头发是葱绿色的,但在...
2023年4月20日,泰山钢铁集团将迎来39周年厂庆。在这美好日子来临之...
1、哈哈,很想知道学弟 妹是哪个系的哈?时间就是报到的两三天之后...
江苏吴中(SH600200,收盘价:7 98元)4月19日晚间发布公告称,截...
今天大盘的走势,其实从量能的角度来说,已经能预料到,前面还有万...
大兴区气象台发布大风蓝色预警【IV 一般】
亲,说清楚点,貌似没有动画片,好像只有书,还有你想看去图书馆看...
4月19日盘中,国内主力合约多数上涨。其中偏强运行,截止发稿主力合...
企查查APP显示,近日,中车戚所关联公司中车戚墅堰机车车辆工艺研究...
1、《知道的请告诉我》,是郑秀文演唱的一首歌曲。2、歌曲由孙燕姿...
1、您好: 很高兴为您解答 我来说说痔疮的症状: 便血:便...
以下是拓维信息在北京时间4月19日14:37分盘口异动快照:4月19日,拓...
《龙城》:家庭伦理话题展现亲人的爱与羁绊工人日报—中工网记者苏...
今天凌晨2时许,北京市森防办发布森林火险橙色预警:预计4月19日至2...
今天(4月18日)是国际古迹遗址日。国家文物局在武汉发布《国家考古...
4月19日,商务部发布《关于原产于日本的进口偏二氯乙烯—氯乙烯共聚...