您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Springboot中RocketMQ怎么實現消息發送與接收”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Springboot中RocketMQ怎么實現消息發送與接收”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
springboot+rockermq 實現簡單的消息發送與接收
普通消息的發送方式有3種:單向發送、同步發送和異步發送。
下面來介紹下 springboot+rockermq 整合實現 普通消息的發送與接收
創建Springboot項目,添加rockermq 依賴
<!--rocketMq依賴--> <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.2.1</version> </dependency>
配置rocketmq
# 端口
server:
port: 8083# 配置 rocketmq
rocketmq:
name-server: 127.0.0.1:9876
#生產者
producer:
#生產者組名,規定在一個應用里面必須唯一
group: group1
#消息發送的超時時間 默認3000ms
send-message-timeout: 3000
#消息達到4096字節的時候,消息就會被壓縮。默認 4096
compress-message-body-threshold: 4096
#最大的消息限制,默認為128K
max-message-size: 4194304
#同步消息發送失敗重試次數
retry-times-when-send-failed: 3
#在內部發送失敗時是否重試其他代理,這個參數在有多個broker時才生效
retry-next-server: true
#異步消息發送失敗重試的次數
retry-times-when-send-async-failed: 3
新建一個 controller 來做消息發送:
package com.example.springbootrocketdemo.controller; import org.apache.rocketmq.client.producer.SendCallback; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 普通信息的三種方式:同步、異步、單向 * @author qzz */ @RestController public class RocketMQCOntroller { @Autowired private RocketMQTemplate rocketMQTemplate; /** * 發送普通消息 * convertAndSend(String destination, Object payload) 發送字符串比較方便 */ @RequestMapping("/send") public void send(){ rocketMQTemplate.convertAndSend("test-topic","test-message"); } /** * 發送同步消息 */ @RequestMapping("/testSyncSend") public void testSyncSend(){ //參數一:topic 如果想添加tag,可以使用"topic:tag"的寫法 //參數二:消息內容 SendResult sendResult = rocketMQTemplate.syncSend("test-topic","同步消息測試"); System.out.println(sendResult); } /** * 發送異步消息 */ @RequestMapping("/testASyncSend") public void testASyncSend(){ //參數一:topic 如果想添加tag,可以使用"topic:tag"的寫法 //參數二:消息內容 //參數三:回調 rocketMQTemplate.asyncSend("test-topic", "異步消息測試", new SendCallback() { @Override public void onSuccess(SendResult sendResult) { System.out.println(sendResult); } @Override public void onException(Throwable throwable) { System.out.println("消息發送異常"); throwable.printStackTrace(); } }); } /** * 發送單向消息 */ @RequestMapping("/testOneWay") public void testOneWay(){ //參數一:topic 如果想添加tag,可以使用"topic:tag"的寫法 //參數二:消息內容 rocketMQTemplate.sendOneWay("test-topic","單向消息測試"); } }
SpringBoot給我們提供了RocketMQTemplate模板類,我們利用這個類可以以多種形式發送消息。
發送方法指定Topic主題test-topic。
新建消息消費者監聽RocketMQConsumerListener,監聽消息,消費消息
package com.example.springbootrocketdemo.config; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; import org.springframework.stereotype.Service; /** * 消費消息 * 配置RocketMQ監聽 * @author qzz */ @Service @RocketMQMessageListener(consumerGroup = "test",topic = "test-topic") public class RocketMQConsumerListener implements RocketMQListener<String> { @Override public void onMessage(String s) { System.out.println("消費消息:"+s); } }
消費者類要實現RocketMQListener
接口,以及動態指定消息類型String。
類上要加上@RocketMQMessageListener注解
,指定topic主題test-topic,以及消費者組test
簡單的消息發送與接收搭建完畢!
啟動服務,測試消息消費
測試同步消息:
測試異步消息:
測試單向消息:
讀到這里,這篇“Springboot中RocketMQ怎么實現消息發送與接收”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。