您的位置:首頁>市場 >

              使用 Spring Cloud Bus 在微服務(wù)之間傳遞消息示例 全球熱資訊

              2023-04-21 16:15:23    來源:騰訊云


              (資料圖片)

              下面是一個(gè)完整的示例,演示如何使用 Spring Cloud Bus 在微服務(wù)之間傳遞消息。該示例包含兩個(gè)微服務(wù),一個(gè)是消息發(fā)送者,另一個(gè)是消息接收者。

              首先,我們需要?jiǎng)?chuàng)建一個(gè) Spring Boot 項(xiàng)目,并添加 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

              在創(chuàng)建的項(xiàng)目中,我們定義了一個(gè)消息類型 MyMessage,該類型包含一個(gè)字符串類型的 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;    }}

              然后,我們創(chuàng)建了一個(gè)消息發(fā)送者,該發(fā)送者使用 Spring Cloud Bus 發(fā)送消息。

              @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());    }}

              在這個(gè)例子中,我們創(chuàng)建了一個(gè) MyController 類,該類定義了一個(gè)發(fā)送消息的 API 接口,接收一個(gè) MyMessage 類型的參數(shù),將參數(shù)傳遞給 MessageSender 類的 sendMessage() 方法。

              MessageSender 類定義了一個(gè) sendMessage() 方法,該方法使用 Spring Cloud Stream 的 output 消息通道發(fā)送消息。

              MessageListener 類定義了一個(gè) handleMessage() 方法,該方法使用 @StreamListener 注解監(jiān)聽 Spring Cloud Stream 的 input 消息通道,并根據(jù)消息類型過濾消息。當(dāng)有符合條件的消息到達(dá)時(shí),handleMessage() 方法會(huì)被自動(dòng)調(diào)用,處理接收到的消息。

              在以上代碼中,我們使用了 @Autowired 注解自動(dòng)注入了 MessageSender 和 MessageListener 類,這是 Spring Boot 自帶的依賴注入功能。

              運(yùn)行應(yīng)用程序后,我們可以使用 Postman 工具或其他 HTTP 工具發(fā)送 HTTP POST 請求,將消息發(fā)送到消息發(fā)送者的 API 接口,如下所示:

              POST http://localhost:8080/send HTTP/1.1Content-Type: application/json{    "content": "Hello, World!"}

              當(dāng)消息到達(dá)時(shí),消息接收者會(huì)打印消息內(nèi)容,如下所示:

              2023-04-19 09:24:47.836  INFO 29740 --- [afka-listener-1] com.example.demo.M

              關(guān)鍵詞:

              相關(guān)閱讀

              亚洲日韩中文字幕在线播放| 国产午夜亚洲精品| 日韩亚洲不卡在线视频中文字幕在线观看 | 91天堂素人精品系列全集亚洲| 久久亚洲色一区二区三区| 久久综合亚洲色hezyo| 2020天堂在线亚洲精品专区| 亚洲一区二区三区四区视频| 激情综合亚洲色婷婷五月| 亚洲人成人77777在线播放 | 国产成人综合久久精品亚洲| 色欲aⅴ亚洲情无码AV蜜桃| 亚洲av成人一区二区三区观看在线| 亚洲欧洲av综合色无码| 亚洲大尺度无码无码专线一区| 亚洲男人的天堂网站| 亚洲av日韩aⅴ无码色老头| 青青青亚洲精品国产| 人人狠狠综合久久亚洲高清| 亚洲国产V高清在线观看| 亚洲综合精品网站| 亚洲一区二区三区在线观看精品中文 | 国产亚洲av片在线观看播放| 国产V亚洲V天堂A无码| 久久精品视频亚洲| 久久亚洲AV成人无码软件| 亚洲精品国产福利在线观看| 亚洲一区二区三区不卡在线播放| 国产成人亚洲精品| 国产亚洲人成在线播放| 亚洲精品国精品久久99热| 亚洲尤码不卡AV麻豆| 亚洲AV无码1区2区久久| 亚洲视频免费播放| 亚洲影视自拍揄拍愉拍| 国产偷国产偷亚洲清高APP| 亚洲午夜精品第一区二区8050| 国产亚洲一区二区三区在线观看 | 亚洲一区二区三区在线网站| 亚洲国产成人久久精品大牛影视| 亚洲äv永久无码精品天堂久久 |