实时

您的位置:首页>资讯 >

使用 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-22 12:52:42

人民网北京4月22日电(欧阳易佳)据水利部消息,4月21日10时,随着引滦枢纽闸开启,2023年引滦入津、入唐春

2023-04-22 12:38:27

新京报贝壳财经讯(记者黄鑫宇)近期,中国银行业协会(简称“中银协”)发布了《中国汽车金融公司行业发展

2023-04-22 11:57:41

D牌和拉人口时机取决于阵容主坦和主C费用1、主1费:D出三星前不拉人口,2-7打完野怪后卡50或40利息D三星1费

2023-04-22 11:42:50

成都蓉城2:1击败沧州雄狮,赢得赛季首场胜利。

2023-04-22 11:38:17

目前看,皇马,曼城都是夺冠冷门,但米兰双雄也并非完全没有夺冠机会。目前曼城最大的问题是,球队在英超,

2023-04-22 11:13:59

1、千焦耳和卡路里之间的换算关系是1千卡=184千焦耳,1千焦耳=0 239千卡,这样就可以在千焦耳和千卡之间进

2023-04-22 10:41:37

4月21日,康缘药业(600557)融资买入1825 44万元,融资偿还2663 7万元,融资净卖出838 26万元,融资余额1 23亿元。

2023-04-22 10:15:52

视觉中国资料图新一年度的“沪惠保”即将开启投保。4月21日,澎湃新闻从知情人士处独家获悉,2023版上海城

2023-04-22 09:57:58

4月20日,市场传闻深圳二手房参考价发生重大变化,一时间让整个深圳楼市沸腾了起来。不过,截至21日晚间,

2023-04-22 09:21:56

东方日升:拟在内蒙古包头市固阳县建设东方日升源网荷储一体化项目及东方日升源网荷储一体化10GW拉晶项目,

2023-04-22 08:49:03

现代快报网是由凤凰出版传媒集团旗下的现代快报倾力打造的江苏新闻门户网站,目前在南京、苏州、无锡、常州

2023-04-22 09:01:15

自制的泡椒鸡爪,不建议保存太久,因为没有添加防腐剂。建议:常温时应尽快食用完毕(夏天不可隔夜吃,冬天

2023-04-22 08:15:25

正观新闻消息,4月20日,“深圳一退休官员坠楼身亡”一事引发网络热议。十多天前,深圳南山区蛇口街道澳城

2023-04-22 07:46:58

商报全媒体讯(椰网 海拔新闻记者李兴民通讯员赵羽耿杨浩宇摄影报道)近日,海口市龙华区紫荆花园小区居民

2023-04-22 07:34:53

1、西部林业科学主办单位:云南省林业科学院;云南省林学会出版周期:双月仅仅是中国科技核心期刊,也算是核

2023-04-22 07:22:06

00:43南瓜、西葫芦、小番茄……有机蔬菜新鲜采摘后,乘专车从崇明来到上海市区的餐厅。一起穿过长江大桥的

2023-04-22 06:47:32

1、戒刺激性的食物:咖啡、酒、肉汁、辣椒、芥茉、胡椒等,这些会刺激胃液分泌或是使胃黏膜受损的食物,应

2023-04-22 06:43:30

4月19日,横琴人寿发布关于独立董事变更的公告,原独立董事靳庆军任期已满六年,不再担任公司独立董事,新

2023-04-22 06:10:29

4月7日10时许,满载着近600名旅客的G4018次旅游专列从深圳北站驶出,开启了奔赴桂林的旅程。这是今年以来,

2023-04-22 05:51:36