springboot集成rocketmq

  本文是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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章