Springboot詳解RocketMQ實現(xiàn)消息發(fā)送與接收流程
springboot+rockermq 實現(xiàn)簡單的消息發(fā)送與接收
普通消息的發(fā)送方式有3種:單向發(fā)送、同步發(fā)送和異步發(fā)送。
下面來介紹下 springboot+rockermq 整合實現(xiàn) 普通消息的發(fā)送與接收
- 創(chuàng)建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
#生產(chǎn)者
producer:
#生產(chǎn)者組名,規(guī)定在一個應用里面必須唯一
group: group1
#消息發(fā)送的超時時間 默認3000ms
send-message-timeout: 3000
#消息達到4096字節(jié)的時候,消息就會被壓縮。默認 4096
compress-message-body-threshold: 4096
#最大的消息限制,默認為128K
max-message-size: 4194304
#同步消息發(fā)送失敗重試次數(shù)
retry-times-when-send-failed: 3
#在內(nèi)部發(fā)送失敗時是否重試其他代理,這個參數(shù)在有多個broker時才生效
retry-next-server: true
#異步消息發(fā)送失敗重試的次數(shù)
retry-times-when-send-async-failed: 3
- 新建一個 controller 來做消息發(fā)送:
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;
/**
* 發(fā)送普通消息
* convertAndSend(String destination, Object payload) 發(fā)送字符串比較方便
*/
@RequestMapping("/send")
public void send(){
rocketMQTemplate.convertAndSend("test-topic","test-message");
}
/**
* 發(fā)送同步消息
*/
@RequestMapping("/testSyncSend")
public void testSyncSend(){
//參數(shù)一:topic 如果想添加tag,可以使用"topic:tag"的寫法
//參數(shù)二:消息內(nèi)容
SendResult sendResult = rocketMQTemplate.syncSend("test-topic","同步消息測試");
System.out.println(sendResult);
}
/**
* 發(fā)送異步消息
*/
@RequestMapping("/testASyncSend")
public void testASyncSend(){
//參數(shù)一:topic 如果想添加tag,可以使用"topic:tag"的寫法
//參數(shù)二:消息內(nèi)容
//參數(shù)三:回調(diào)
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("消息發(fā)送異常");
throwable.printStackTrace();
}
});
}
/**
* 發(fā)送單向消息
*/
@RequestMapping("/testOneWay")
public void testOneWay(){
//參數(shù)一:topic 如果想添加tag,可以使用"topic:tag"的寫法
//參數(shù)二:消息內(nèi)容
rocketMQTemplate.sendOneWay("test-topic","單向消息測試");
}
}SpringBoot給我們提供了RocketMQTemplate模板類,我們利用這個類可以以多種形式發(fā)送消息。
發(fā)送方法指定Topic主題test-topic。
- 新建消息消費者監(jiān)聽RocketMQConsumerListener,監(jiān)聽消息,消費消息
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監(jiān)聽
* @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);
}
}消費者類要實現(xiàn)RocketMQListener接口,以及動態(tài)指定消息類型String。
類上要加上@RocketMQMessageListener注解,指定topic主題test-topic,以及消費者組test
簡單的消息發(fā)送與接收搭建完畢!
- 啟動服務,測試消息消費


測試同步消息:

測試異步消息:

測試單向消息:

測試OK,成功消費!
到此這篇關于Springboot詳解RocketMQ實現(xiàn)消息發(fā)送與接收流程的文章就介紹到這了,更多相關Springboot 消息發(fā)送與接收內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java?集合框架底層數(shù)據(jù)結構實現(xiàn)深度解析(示例詳解)
Java 集合框架(Java Collections Framework, JCF)是支撐高效數(shù)據(jù)處理的核心組件,其底層數(shù)據(jù)結構的設計直接影響性能與適用場景,這篇文章主要介紹Java集合框架底層數(shù)據(jù)結構實現(xiàn)深度解析,需要的朋友可以參考下2025-06-06
IDEA利用jclasslib 修改class文件的實現(xiàn)
這篇文章主要介紹了IDEA利用jclasslib 修改class文件的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-02-02
Java?Post請求發(fā)送form-data表單參數(shù)詳細示例代碼
POST請求是一種常見的網(wǎng)絡通信操作,用于向服務器發(fā)送數(shù)據(jù),這種請求通常用于上傳文件或者提交包含大量數(shù)據(jù)的表單,這篇文章主要介紹了Java?Post請求發(fā)送form-data表單參數(shù)的相關資料,需要的朋友可以參考下2025-07-07
Springboot集成JWT實現(xiàn)登錄注冊的示例代碼
本文主要介紹了Springboot集成JWT實現(xiàn)登錄注冊的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-06-06
SpringBoot整合RabbitMQ之路由模式的實現(xiàn)
本文主要介紹了SpringBoot整合RabbitMQ之路由模式的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-06-06
Mybatis-plus獲取雪花算法生成的ID并返回生成ID
本文主要介紹了Mybatis-plus獲取雪花算法生成的ID并返回生成ID,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-09-09
Java安全 ysoserial CommonsCollections2示例分析
這篇文章主要為大家介紹了Java安全 ysoserial CommonsCollections2示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11

