实时

您的位置:首页>产品 >

使用 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 08:58:11

狐臭是指身体发出的气味,是由于大汗腺分泌的汗液没有及时清理干净,被皮肤表面的细菌分解而散发出来的。您可以选择以下处理方法

2023-04-22 09:05:10

长城证券4月21日公告,公司一季度实现营业总收入12亿元,同比上涨755%;归母净利润51亿元,同比扭亏;基本每股收益0

2023-04-22 08:17:22

①台州府城+紫阳古街紫阳古街的尽头就是台州府城*从台州站打车到紫阳古街加上高速费¥100左右紫阳古街:主要以吃的为主,比较有特色的有蛋清羊

2023-04-22 07:56:44

现在有许多种方式进行体温测定,最标准的是水银柱体温计,可在不同部位测定体温,如,口腔,腋窝,肛门等部位。目前应用的体温测定方法,如测

2023-04-22 07:45:10

1、1 旅行箱密码忘了怎么办?解决方法之一:  将密码尽力向开关可拉动的反方向推,打开手电照缝隙,转动密码盘,观察之下的转轴凹槽。2、 

2023-04-22 07:31:19

解答:1、尝试新事物,并刺激大脑神经达到兴奋和忘记坏心情的目的。2、拍照,用照片记录生活的点点滴滴,发现生活的美好。3、

2023-04-22 06:54:10

中国人民银行4月21日对外公布,2023年第一季度,人民银行依法对2家拒收现金的单位及相关责任人作出经济处罚并予以曝光。央行发布的处罚情况显

2023-04-22 06:38:46

  4月20日,沙尘笼罩下的钟楼。本报记者李宗华摄   4月20日,西安自清晨起天色昏黄,出现大范围沙尘天气。本报记者马昭摄   4月20日,西

2023-04-22 06:16:17

据证券之星公开数据整理,近期锋龙股份(002931)发布2023年一季报。根据财报显示,本报告期中锋龙股份净利润减94 89%。截至本报告期末,公司

2023-04-22 05:48:36

CFi CN讯:旭辉股份(股票代码:835540)公布2022年年度权益分派预案公告。根据公司2023年4月21日披露的202 "><metacontent= "width=device-wi

2023-04-22 06:04:50

湖南日报·新湖南客户端4月21日讯(记者成俊峰通讯员赵尹瑜)4月20日,石鼓区召开“三湘护农”专项行动工作推进会。

2023-04-22 04:59:22

解答:1、爱情的誓言被夸大了,海枯石烂的爱情是虚假的,誓言的爱情是残酷的。七夕到了,想送你天长地久的爱。我只愿你我的爱情

2023-04-22 04:43:40

在长春,提起吉林省广告产业园,很多创业者都竖起大拇指点赞。这家广告园区有啥不一般,4月21日,中国吉林网走进吉林省广告产业园一探究竟。

2023-04-22 04:16:55

1、艾滋病抗体一般在艾滋病感染后2-4周出现,因为感染后有一个窗口期,在窗口期不会出现艾滋病抗体。窗口期通常持续2-4周

2023-04-22 04:04:43

4月20日,一名盲童在“阅读点亮你我”活动上阅读。  在第28个世界读书日来临之际,中国盲文图书馆主办“阅读点亮你我”活动,旨在充分展示图

2023-04-22 03:13:05

人工智能(AI)已迅速成为包括工作场所在内的各个行业的重要工具。虽然人工智能可以提供许多好处,如提高效率和生产力,但也带来了一系列挑战。

2023-04-22 03:08:28

欢迎观看本篇文章,小升来为大家解答以上问题。最好听的男生网名分享,最好听的男生网名精选很多人还不知道,现在让我们一起来看

2023-04-22 03:11:27

但所面临的用户基础问题、拼团模式是否被当地接受等问题,似乎让拼多多的澳洲之旅并非一帆风顺,拼多多若想在澳洲闯出一片天,或许还需要更多

2023-04-22 02:45:11

1、win10系统还原到win7、win8的方法如下:一、win10直接退回win7 win8:鼠标点击开机图标,依次打

2023-04-22 02:40:27