本文是springboot集成rocketmq的入門篇,主要介紹單機環境下安裝rocketmq,並集成到springboot框架中,實現字符串類型消息的生產和消費。
1)高可用集羣部署方案請參考 待更新。。。
2)更多使用方式請參考 待更新。。。
一、下載、安裝、啓動
1、下載
http://rocketmq.apache.org/dowloading/releases/
2、安裝
已rocketmq-all-4.6.0-source-release.zip爲例
unzip rocketmq-all-4.6.0-source-release.zip
cd rocketmq-all-4.6.0-source-release
mvn -Prelease-all -DskipTests clean install -U
cd distribution/target/rocketmq-4.6.0/rocketmq-4.6.0
注:target目錄看起來有些奇怪,不用管具體差異,找到裏面的
rocketmq-4.6.0文件夾可以放到任意指定未知
3、配置環境變量
/etc/profile
export ROCKETMQ_HOME=/Users/zhanghao/Desktop/develop/rocketmq-4.6.0
export PATH=$PATH:$ROCKETMQ_HOME/bin
4、啓動NameServer
進入bin目錄,當然環境變量已經配置了PATH的話可以直接運行,此處只是最簡單的啓動,採用所有的默認配置,下述Broker也採用默認配置。
默認端口:9876
nohup sh mqnamesrv &
5、啓動Broker
默認端口:10911
nohup sh mqbroker -n localhost:9876 &
6、創建測試Topic
sh mqadmin updateTopic -b localhost:10911 -n localhost:9876 -t my-topic
-b Broker地址
-n NameServer地址
-t Topic名稱
二、SpringBoot集成
1、pom.xml
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.0.4</version>
</dependency>
2、application.properties
# 生產者配置
rocketmq.name-server=localhost:9876
rocketmq.producer.group=my-group1
rocketmq.producer.sendMessageTimeout=300000
# 消費者配置
#rocketmq.name-server=localhost:9876
3、生產者
package com.houzigege.rocketmq;
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;
@RestController
@RequestMapping("/test")
public class ProducerController {
@Autowired
private RocketMQTemplate rocketMQTemplate;
@RequestMapping("/send")
public String testSend(String msg) {
try {
rocketMQTemplate.convertAndSend("my-topic", msg);
return "success";
} catch (Exception e) {
e.printStackTrace();
return "fail";
}
}
}
4、消費者
package com.houzigege.rocketmq;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;
@Component
@RocketMQMessageListener(topic = "my-topic", consumerGroup = "string_consumer")
public class StringConsumeListener implements RocketMQListener<String> {
@Override
public void onMessage(String message) {
System.out.println("------- StringConsumer received: " + message);
}
}
參考:
http://rocketmq.apache.org/docs/quick-start/
https://github.com/apache/rocketmq-spring/tree/master/rocketmq-spring-boot-samples