(资料图)
下面是一个完整的示例,演示如何使用 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
标签:
环球聚焦:使用 Spring Cloud Bus 在微服务之间传递消息示例
快船VS太阳:三个火枪手,凤凰城的致胜秘诀
武陵区育英小学:稳步推进省级语言文字课题研究_全球短讯
当日快讯:龙虎榜 | 北京文化今日涨停,机构合计净买入5117.04万元
环球讯息:如何提高英语听力成绩小学快速升
又鞭尸我车!哈兰德本赛季欧冠打进12球,与切尔西全队进球数持平 要闻
4月19日十大人气股(附名单)
“国光女神”自揭初中离家出走遭三男轮奸,被70岁伯伯载到荒山野岭
魏龙柱 魏龙|全球看点
班巴赛后直接开吃!美媒:今晚打了30.1秒 班巴肯定饿坏了
2连板后股价转跌 焦点科技此前称:公司目前经营情况正常 内外部经营环境未发生重大变化
2023上海车展:出乎意料的错峰亮相 静评日产全新一代逍客
每日热点:2023上海车展:北京汽车品牌焕新,整合回归一个“北京”
焦点资讯:网曝《平凡之路》定档央八,金晨郭麒麟主演,编剧导演都是实力派
世界焦点!台式电脑桌面密码忘记_台式电脑桌面密码
青岛海警局组织开展“4•15”全民国家安全教育日主题宣传活动
百胜智能:4月19日融资买入39.82万元,融资融券余额2584.92万元-天天看点
年轻小伙一出烧烤摊就入抢救室?警惕这种病
首都在线(300846)盘中异动 股价振幅达8.07% 上涨7.2%(04-20) 全球信息
当前视点!三国志12攻略劝降_三国志12攻略X 关闭
X 关闭