springboot集成RocketMQ過(guò)程及使用示例詳解
1、 說(shuō)明
Springboot集成RocketMQ時(shí)需要特別注意版本問(wèn)題,否則會(huì)出現(xiàn)各類(lèi)啟動(dòng)報(bào)錯(cuò)問(wèn)題,這里使用的springboot 版本:2.2.7.RELEASE, RocketMq版本:2.2.3
2、集成過(guò)程
pom文件引用
這里網(wǎng)上有單獨(dú)在引用rocketmq-client依賴(lài)包的,是不需要的,已經(jīng)包含在rocketmq-spring-boot-starter依賴(lài)包中。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.7.RELEASE</version>
</parent>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>yml文件配置
spring:
# 數(shù)據(jù)庫(kù)信息
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/longfamily?useUnicode=true&characterEncoding=utf-8&userSSL=false
username: root
password: 123456
##RocketMq配置
rocketmq:
#nameservice服務(wù)器地址(多個(gè)以英文逗號(hào)隔開(kāi))
# 注意高版本下使用的是name-server,低版本使用的是 nameServer。
name-server: 10.0.164.31:9876
producer:
group: test這里把spring配置也貼出來(lái),是想說(shuō)明rocketMq與spring在yaml文件中是同一級(jí)別(容易當(dāng)成spring節(jié)點(diǎn)下面的子節(jié)點(diǎn))。否則會(huì)啟動(dòng)報(bào)錯(cuò)。
消費(fèi)者
@Component
@RocketMQMessageListener(consumerGroup = "H", topic = RocketMQTopic.TOPIC_ORDER)
public class TestMQListener implements RocketMQListener<String> {
@Override
public void onMessage(String message) {
System.out.println("消費(fèi)者收到信息:==="+message);
}
}消費(fèi)者是通過(guò)RocketMQMessageListener來(lái)監(jiān)聽(tīng)Topc, 通過(guò)實(shí)現(xiàn)RocketMQListener <T>接口實(shí)現(xiàn)其onMessage(T t)方法來(lái)處理接收到的消息
生產(chǎn)者
這里同意封裝了RocketMQ發(fā)送消息的工具類(lèi)。
@Slf4j
@Component
public class RocketMQUtils {
@Resource
private RocketMQTemplate rocketMQTemplate;
/**
* 異步發(fā)送MQ消息
*/
public void sendMessage(Long id, final String topic, final String context, Boolean isExternal) {
try {
log.debug("Sending message to MQ topic {}, context {}", topic, context);
SendCallback callback = new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
//打印msgId用來(lái)以備查驗(yàn),外部消息發(fā)送mq成功則任務(wù)置為成功
log.info("Success sending message to MQ: {}, context: {}, msgId: {}", topic, context, sendResult.getMsgId());
}
@Override
public void onException(Throwable e) {
log.error("Failed to send message to MQ {}, msg {}, cause {}", topic, context, Throwables.getStackTraceAsString(e));
}
};
rocketMQTemplate.asyncSend(topic, context, callback);
} catch (Exception e) {
log.error("Failed to send message to MQ! message: {}, stackTrace: {}", context, Throwables.getStackTraceAsString(e));
}
}
}測(cè)試發(fā)送消息接口
@RestController
@RequestMapping("/api/test")
public class CommonTestController {
@Autowired
private RocketMQUtils rocketMQUtils;
// mq
@PostMapping("/mq/send")
public void operateRocketMQ(){
rocketMQUtils.sendMessage(1L, RocketMQTopic.TOPIC_ORDER,"firstContext",true);
}運(yùn)行結(jié)果
[2023-02-27 10:17:30.741] [DEBUG] [T:http-nio-8061-exec-3][tid=][Class:c.g.c.u.RocketMQUtils -> sendMessage]|Sending message to MQ topic topic-order, context firstContext
[2023-02-27 10:17:30.760] [INFO] [T:NettyClientPublicExecutor_2][tid=][Class:c.g.c.u.RocketMQUtils -> onSuccess]|Success sending message to MQ: topic-order, context: firstContext, msgId: 0000010169EE18B4AAC2881AB17B0001
消費(fèi)者收到信息:===firstContext
以上就是springboot集成RocketMQ過(guò)程及使用示例詳解的詳細(xì)內(nèi)容,更多關(guān)于springboot集成RocketMQ的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Spring3 MVC請(qǐng)求參數(shù)獲取的幾種方法小結(jié)
本篇文章主要介紹了Spring3 MVC請(qǐng)求參數(shù)獲取的幾種方法小結(jié),非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2017-03-03
Mybatis中ResultMap解決屬性名和數(shù)據(jù)庫(kù)字段名不一致問(wèn)題
我們Pojo類(lèi)的屬性名和數(shù)據(jù)庫(kù)中的字段名不一致的現(xiàn)象時(shí)有發(fā)生,本文就詳細(xì)的介紹一下Mybatis中ResultMap解決屬性名和數(shù)據(jù)庫(kù)字段名不一致問(wèn)題,感興趣的可以了解一下2021-10-10
Java實(shí)戰(zhàn)之自助進(jìn)行多張圖片合成拼接
在當(dāng)今數(shù)字化時(shí)代,圖像處理技術(shù)在各個(gè)領(lǐng)域都發(fā)揮著至關(guān)重要的作用,本文為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)多張圖片合成拼接,需要的可以了解下2025-02-02
springboot實(shí)現(xiàn)以代碼的方式配置sharding-jdbc水平分表
這篇文章主要介紹了springboot實(shí)現(xiàn)以代碼的方式配置sharding-jdbc水平分表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
劍指Offer之Java算法習(xí)題精講鏈表專(zhuān)題篇
跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過(guò)之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化2022-03-03
Spring?Boot?實(shí)現(xiàn)字段唯一校驗(yàn)功能(實(shí)例代碼)
這篇文章主要介紹了Spring?Boot?實(shí)現(xiàn)字段唯一校驗(yàn),實(shí)現(xiàn)代碼很簡(jiǎn)單,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
Spring框架中ImportBeanDefinitionRegistrar的應(yīng)用詳解
這篇文章主要介紹了Spring框架中ImportBeanDefinitionRegistrar的應(yīng)用詳解,如果實(shí)現(xiàn)了ImportSelector接口,在配置類(lèi)中被@Import加入到Spring容器中以后,Spring容器就會(huì)把ImportSelector接口方法返回的字符串?dāng)?shù)組中的類(lèi)new出來(lái)對(duì)象然后放到工廠中去,需要的朋友可以參考下2024-01-01
SpringBoot快速接入DeepSeek?api(帶頁(yè)面)保姆級(jí)教程
這篇文章主要介紹了如何在Java端接入DeepSeek?API,包括申請(qǐng)APIkey、項(xiàng)目結(jié)構(gòu)展示、編寫(xiě)controller和前端界面、以及測(cè)試啟動(dòng)項(xiàng)目的過(guò)程,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-03-03
java基于包結(jié)構(gòu)的請(qǐng)求路由實(shí)現(xiàn)實(shí)例分享
基于包結(jié)構(gòu)的請(qǐng)求路由簡(jiǎn)單實(shí)現(xiàn)實(shí)例分享,大家參考使用吧2013-12-12

