springboot集成RocketMQ過程及使用示例詳解
1、 說明
Springboot集成RocketMQ時需要特別注意版本問題,否則會出現(xiàn)各類啟動報錯問題,這里使用的springboot 版本:2.2.7.RELEASE
, RocketMq版本:2.2.3
2、集成過程
pom文件引用
這里網(wǎng)上有單獨在引用rocketmq-client
依賴包的,是不需要的,已經(jīng)包含在rocketmq-spring-boot-starter
依賴包中。
<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ù)庫信息 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服務器地址(多個以英文逗號隔開) # 注意高版本下使用的是name-server,低版本使用的是 nameServer。 name-server: 10.0.164.31:9876 producer: group: test
這里把spring
配置也貼出來,是想說明rocketMq與spring在yaml文件中是同一級別(容易當成spring節(jié)點下面的子節(jié)點)。否則會啟動報錯。
消費者
@Component @RocketMQMessageListener(consumerGroup = "H", topic = RocketMQTopic.TOPIC_ORDER) public class TestMQListener implements RocketMQListener<String> { @Override public void onMessage(String message) { System.out.println("消費者收到信息:==="+message); } }
消費者是通過RocketMQMessageListener
來監(jiān)聽Topc
, 通過實現(xiàn)RocketMQListener <T>接口實現(xiàn)其onMessage(T t)方法來處理接收到的消息
生產(chǎn)者
這里同意封裝了RocketMQ發(fā)送消息的工具類。
@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用來以備查驗,外部消息發(fā)送mq成功則任務置為成功 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)); } } }
測試發(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); }
運行結果
[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
消費者收到信息:===firstContext
以上就是springboot集成RocketMQ過程及使用示例詳解的詳細內(nèi)容,更多關于springboot集成RocketMQ的資料請關注腳本之家其它相關文章!
相關文章
Mybatis中ResultMap解決屬性名和數(shù)據(jù)庫字段名不一致問題
我們Pojo類的屬性名和數(shù)據(jù)庫中的字段名不一致的現(xiàn)象時有發(fā)生,本文就詳細的介紹一下Mybatis中ResultMap解決屬性名和數(shù)據(jù)庫字段名不一致問題,感興趣的可以了解一下2021-10-10springboot實現(xiàn)以代碼的方式配置sharding-jdbc水平分表
這篇文章主要介紹了springboot實現(xiàn)以代碼的方式配置sharding-jdbc水平分表,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11Spring?Boot?實現(xiàn)字段唯一校驗功能(實例代碼)
這篇文章主要介紹了Spring?Boot?實現(xiàn)字段唯一校驗,實現(xiàn)代碼很簡單,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08Spring框架中ImportBeanDefinitionRegistrar的應用詳解
這篇文章主要介紹了Spring框架中ImportBeanDefinitionRegistrar的應用詳解,如果實現(xiàn)了ImportSelector接口,在配置類中被@Import加入到Spring容器中以后,Spring容器就會把ImportSelector接口方法返回的字符串數(shù)組中的類new出來對象然后放到工廠中去,需要的朋友可以參考下2024-01-01SpringBoot快速接入DeepSeek?api(帶頁面)保姆級教程
這篇文章主要介紹了如何在Java端接入DeepSeek?API,包括申請APIkey、項目結構展示、編寫controller和前端界面、以及測試啟動項目的過程,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-03-03