(资料图片)
下面是一个完整的示例,演示如何使用 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
X 关闭
-
小米败走印度?48亿元存款被没收,销量从第1跌至第4
去年4月份,印度执法当局对小米下了黑手,扣押了小米集团存在印度的555 13亿卢比存款,约合48亿人民币。印度给出的理由是小米集团以假冒成支付
-
“振兴深蓝,智见未来” 福建连江县举办智慧海渔高峰论坛 世界今亮点
“振兴深蓝,智见未来”福建连江县举办智慧海渔高峰论坛
-
快手网名昵称带符号_快手网名带自己名字的_世界实时
1、周胜贤用自己的名字做个个快手名字。本文到此分享完毕,希望对大家有所帮助。
-
中超德赫亚?颜骏凌目送姜至鹏角球破门 头号国门不会出击?
北京时间4月22日下午,中超第2轮上演一场跌宕起伏的比赛,上海海港在2-0领先的情况下一度被深圳队连扳2球,幸好武磊第87分钟单刀绝杀,才有惊
-
基辛格夫人祖籍_基辛格夫人-环球聚焦
1、对基辛格影响最大的是他的前后两任妻子。2、基辛格的第一位妻子名叫安娜・佛莱彻尔,也是犹太人,与基辛格生有一儿一女,是
-
最新:又被他装到了穆帅输掉首回合后表示:现在才是中场休息
又被他装到了穆帅输掉首回合后表示:现在才是中场休息,罗马,穆帅,中场休息,费耶诺德,何塞·穆里尼奥
-
肿眼泡怎么形成的 肿眼泡怎么消除
今天来聊聊关于肿眼泡怎么形成的,肿眼泡怎么消除的文章,现在就为大家来简单介绍下肿眼泡怎么形成的,肿眼泡怎么消除,希望对各
-
今日聚焦!酷特智能与中远海运(大连)举办战略合作揭牌仪式
4月20日,酷特智能与中远海运(大连)有限公司成功举办战略合作揭牌仪式。酷特智能作为中远海运(大连)有限公司“服装生产基地”,双方于去年签订
-
每日看点!思念故乡的古诗有哪些_思念故乡的古诗
1、少小离家老大回,乡音无改鬓毛衰。2、——贺知章《回乡偶书二首·其一》译文:我在年少时离开家乡,到了迟暮之年才回来。3
-
环球消息!来自丰田的丰田Matrix车系简介
丰田为Matrix规划Standard、S和XRS三种车型。外型上Matrix融入Coupe的设计概念,与上一代车型相较