实时

您的位置:首页>资讯 >

使用 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

关键词:

推荐阅读
下面是一个完整的示例,演示如何使用SpringCloudBus在微服务之间传递消息。该示例包含两个微服务,一个是消

2023-04-21 16:11:13

1、出差总结主要包括:1,此行的目的和完成情况。2、2,市场行情。3、3,市场走向和趋势。4、4,各品牌的销

2023-04-21 15:56:10

近日,中国铁路成都局集团有限公司在成都客运段值乘的动车组列车上推出了“小碗菜”系列餐食,其中包括“特

2023-04-21 14:55:23

淄博新区城发和樾项目的置业顾问高升林是淄博本地人,4月20日,他通过电话告诉《每日经济新闻》记者,今年

2023-04-21 15:13:27

对于GPT-verse对生产力的影响,唐鹏飞根据经济学中的柯布-道格拉斯函数给出了一个量化的估计模型。

2023-04-21 15:08:06

新闻稿军训范文500字左右第1篇已经第三天了,身体虽劳累,却仍能坚持。每一个军姿都像无穷尽的煎熬,每一个

2023-04-21 15:08:05

陕西:加大政府采购支持中小企业力度

2023-04-21 14:40:31

环己基丁酸铅(II),关于环己基丁酸铅(II)介绍这个很多人还不知道,我们一起来看看!1、环己基丁酸铅(II)是一

2023-04-21 14:30:33

“成都家校社协同育人行动”亮点点击队伍建设:*发挥成都市家庭教育指导中心专家库作用,遴选高校心理学专

2023-04-21 13:24:44

近日,南京江宁区紫清湖野生动物世界的大熊猫被工作人员用竹竿拍打催促的视频在网络流传,有网友质疑饲养员

2023-04-21 13:12:14

App4月19日消息,上海市经济信息化委19日印发《上海市推进算力资源统一调度指导意见》。《意见》提出主要目

2023-04-21 13:05:27

乌苏啤酒,顾名思义就是新疆乌苏当地的啤酒,本身是一种在乌苏本地非常普通,但也大众的便宜啤酒,而许多外

2023-04-21 12:27:12

编者按:东风浩荡满目新,砥砺奋进正当时。2023年,海南以项目建设为抓手,持续扩大对外开放合作、深化重点

2023-04-21 12:12:00

金投网提供工商银行筑梦中华金条20克价格今天多少一克(2023年04月21日),工商银行筑梦中华金条20克价格最

2023-04-21 11:53:44

4月20日,怡合达(301029)融资买入252 43万元,融资偿还287 64万元,融资净卖出35 21万元,融资余额8659 3

2023-04-21 11:34:34

12月22日午间,沪深两市半日下来共有35只涨停股,7只跌停股。涨停股主要集中于国企改革、电子商务、职业教

2023-04-21 10:57:17

科腾精工4月27日深交所首发上会实控人为加拿大国籍

2023-04-21 10:31:33

报告:去年上市银行净利润增速回落,盈利能力平稳

2023-04-21 10:37:07

1、在凤凰周刊官方网站注册后可看到部分内容,其他地方没有 。本文到此分享完毕,希望对大家有所帮助。

2023-04-21 10:02:35

散伙!勇士有意交易格林,big3时代将成过去,普尔成最大受益者,勇士,库里,汤普森,美国篮球,乔丹·普尔,贾麦

2023-04-21 09:31:55