当前讯息:使用 Spring Cloud Bus 在微服务之间传递消息示例


(资料图片仅供参考)

下面是一个完整的示例,演示如何使用 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 在微服务之间传递消息示例
2023-04-20 18:05:14
豪横!李春江早已财务自由,珠三角名下房产别墅不计其数,当包租公躺平_新视野
2023-04-20 17:57:08
安徽省合肥市巢湖市“四到位”开展“食安守护”专项行动_天天速看
2023-04-20 17:28:25
打开智慧汽车大门 银基科技联合腾讯智慧出行推出数字钥匙云-世界快播报
2023-04-20 16:52:58
要闻:4月28日开幕!2023金山购物节超百场精彩活动打造“全民消费盛宴”
2023-04-20 16:00:17
春风吹暖“夜经济” 多地文旅快速复苏
2023-04-20 15:43:58
磨金石教育|迪士尼应该停止那可笑的翻拍电影(下)
2023-04-20 16:03:00
农业农村部:将稳慎推进农村宅基地改革制度试点_播报
2023-04-20 15:35:43
农村创业的好项目有哪些(农村创业有哪些好点子)_世界热点评
2023-04-20 14:54:13
淄博烧烤带火当地政信信托 中融信托回应称购买产品不能跟风 环球看热讯
2023-04-20 14:38:46
子宫颈癌曹泽毅2021观点_世界新消息
2023-04-20 14:55:38
两部门联合发文:每局剧本娱乐活动结束后必须进行一次防火巡查 世界热讯
2023-04-20 14:24:44
香港恒生指数4月19日(周三)收盘下跌282.75点,跌幅1.37%,报20367.76点
2023-04-20 13:59:36
全球短讯!备考CPA如何选择合适的学习资料?
2023-04-20 13:13:27
健康、舒适、智能、绿色低碳 净水、热水家电升级瞄准市场新需求_天天速递
2023-04-20 13:01:10
远上寒山石径斜石径的意思_石径的意思 天天看热讯
2023-04-20 12:21:15
熊胆粉_xdf格式 天天快播
2023-04-20 11:52:46
每日观察!上海车展 | 读图:全新梅赛德斯-迈巴赫EQS纯电SUV
2023-04-20 11:48:37
世界微头条丨曹操高陵遗址博物馆将开馆 背诵曹操诗歌可免票
2023-04-20 11:21:20
存在虚假宣传 价格欺诈等行为,三亚7家海鲜餐饮店和5家婚纱摄影企业被下架整改 环球热点评
2023-04-20 11:01:09
深圳新增共享停车位1156个!车位预约共享平台助力市民停车更便捷
2023-04-20 10:55:41
大屁股电脑显示器图片(大屁股图片吉吉影音)|天天精选
2023-04-20 10:34:31
熬夜追完全集,如此走心的国产剧不该糊|环球即时
2023-04-20 10:09:42
齐鲁政情·城市经营观察④丨山东这位市委书记,奖给新上市企业1000万 视焦点讯
2023-04-20 09:45:49
焦点快报!永达1780mm热线预计6月底实现试投产
2023-04-19 20:14:25
超级兵王叶谦全文下载百度云_超级兵王叶谦全文下载 当前短讯
2023-04-19 19:44:43
事关老年生活,来看看这份最新养老消费调查“报告”
2023-04-19 19:31:17
旅泰大熊猫“林惠”不幸离世 中泰专家将联合调查死因-天天快资讯
2023-04-19 19:07:33
环境影响评价·技术导则与标准_关于环境影响评价·技术导则与标准介绍-天天聚看点
2023-04-19 19:14:17
消息!亭子桥小学:快乐大篷车科技大舞台
2023-04-19 18:24:56