使用 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
标签:
责任编辑:hnmd003
相关阅读
-
使用 Spring Cloud Bus 在微服务之间传递消息示例
下面是一个完整的示例,演示如何使用SpringCloudBus在微服务之间传递消息。该示例包含两个微服务,一个是消
2023-04-23 -
使用 Spring Cloud Bus 在微服务之间传递消息示例
下面是一个完整的示例,演示如何使用SpringCloudBus在微服务之间传递消息。该示例包含两个微服务,一个是消
2023-04-23 -
python-异常处理和错误调试-asyncio中的错误调试(二)|环球通讯
在asyncio中,我们还可以使用日志系统进行调试。日志系统可以将程序运行时的信息输出到指定的日志文件或者
2023-04-23 -
上海首轮土拍收官:超50家房企“争霸” 7成地块被央国企拿下
4月21日,上海2023年第一批次集中土拍收官,总成交金额519亿元,平均成交楼面价26090元 平方米。此次土拍引
2023-04-23
阅读排行
资讯播报
- 简讯:八代水濑泳装(八代水濑)
- 全球消息!一批基金净值创新高,...
- 下载智能语音助手(下载智能语音...
- 视点!荣南科技太仓新建工厂开工...
- AI算法模型(AI算法模型部署)
- ai智能软件怎么用(智能ai制作)
- 世界快播:祝铭震更新社媒告别本...
- 海贼王日语台词中文谐音_海贼王...
- 江汉大学图书馆官网首页_江汉大...
- 帝业如画慕容湮儿结局_帝业如画...
- pnp三极管工作原理导通条件_pnp...
- 荣耀X50i手机发布:1499元起
- 休闲娱乐必备!这个小说软件免费...
- 明天(4月23号)特大暴雨大雨滚滚...
- 浪潮信息:已将“All in液冷”...
- 惠州欠条律师费用要多少? 世界播报
- 焦点简讯:如何给付二周岁以下的...
- 密云区征地律师收费标准
- 巴斯夫:引领行业零碳价值链,用...
- 世界速讯:“优等生”百威中国可...
- 百年药企脱碳创新,引领制药行业...
- noodle怎么读 noodle 全球看热讯
- 天天最新:34的内衣是属于啥罩杯...
- 最新:东方福利网客服-东方福利...
- 全球热推荐:2023上海车展:捷尼...
- 商务专函邮寄方式怎么查询-华夏...
- 太阳能发电国家补贴是真的吗-太...
- 四个月宝宝如何添加辅食_四个月...
- 2020年什么时候打春_打春是什么意思
- 新消费时代下品牌面临数个痛点 ...
- 擀面杖吹火歇后语下一句是什么_...
- 挤地铁的首富 环球快资讯
- 俞敏洪:大学生语言学习依然是非...
- 今日teach的名词是什么_teach的...
- 大s和小s是双胞胎吗_大s和小s不...
- 日常生活:北京站乘地铁到北京西...
- 日常生活:如何鉴别正品特百惠
- 世界即时:德国决定驱逐俄外交人...
- 日常生活:中国十大寿险排行榜-热议
- 河北省教育厅学历认证电话号码_...
- 天天热推荐:西游记后传片尾曲相...
- 白头发怎么调理变黑发_白头发怎...
- 短程弹道导弹|世界观热点
- 吃冬枣的好处和坏处 冬枣吃多了...
- 吃薏米的好处和坏处 吃薏米对人...
- 吃鸭爪的好处和坏处 吃鸭爪有哪...
- 面试会计主管有哪些面试问题_会...
- 每日速递:我找到了阅读GitHub项...
- 阿里P9下岗再就业
- 【世界独家】原腾讯QQ空间负责人...
- 天天热推荐:世界地球日,打卡澜...
- 好心情品牌介绍_好心情心理咨询...
- 第一次鸦片战争_当前动态
- 赣州市气象台更新雷电黄色预警信...
- 每日热讯!上栗县气象台发布雷电...
- 士官长
- 余干县气象台发布大风蓝色预警信...
- 焦点热门:小云助手app下载安卓(...
- 当前关注:2023江西永修半程马拉...
- 奇瑞TJ-1惊艳上海车展,与时代乐...
- [朝闻天下]今天是世界地球日 我...
- 迎接世界地球日 多地中小学、幼...
- 2023年全国青少年网球积分排名赛...
- 天天快看点丨扬州市区(不含江都...
- 3000名跑友角逐2023北京永定河马...
- 郧西县气象台发布暴雨蓝色预警【...
- 门槛降低!2023年扬州市区住房保...
- 200余颗遥感卫星守护“美丽中国...
- 第七届“和谐杯”京津冀国际公路...
- 好孩子安全两个舱新品发布会 用...
- 当前快播:心理调适:心理篇
- 株洲市中级人民法院:为法治株洲...
- 望岳谈|行走黄渤海看旅游:培育...
- 【援青进行时】玉树先天性心脏病...
- “咖啡+体育”跨界互动 咖啡人...
- 【新时代 新征程 新伟业·高质...
- 天天快资讯:【关注第54个世界地...
- 2023三峡橘乡·田园马拉松鸣枪起...
- 环球微头条丨2023中国公路自行车...
- 兰正秋被双开_全球实时
- 秦刚说的“卡夫丁峡谷”是什么?...
- 世界观速讯丨注意!这类视频,下...
- 焦点热文:微信又更新了!这次有...
- 热水瓶正常是几升?_热水瓶正常的...
- 烈风圣翼svs暗绝元冥_烈风圣翼_...
- 【世界速看料】【刚刚通报】廊坊...
- 广汽本田accord是什么车_本田acc...
- 英王室庆已故女王97岁生日!罕见...
- 实时:明查|法国要以600亿美元...
- 四川省甘孜藏族自治州道孚县2023...
- 新漫评:2023年已有万人命丧枪下...
- 天天短讯!如何提高团队凝聚力视...
- 【世界热闻】丹参川芎嗪针说明书...
- ec电脑版如何下载_ec电脑版-天天播报
- 深度系统安装教程失败_深度系统...
- 卡路里歌曲歌词偕音_卡路里歌曲...
- 天天热文:爱奇艺下载官网电脑版...
- 选择大城市逐梦还是小城市安稳 ...
- 天天信息:印尼班达海附近发生6.5...
- 最新消息:广州南沙队夺冠 船...