spring boot + rocketMQ--簡單的消息發送與接收

1. 環境搭建html

咱們要使用rocketMQ,所以須要使用rocketMQ服務。        安裝教程java

以上並無介紹windows下怎麼運行,因此講一下windows的安裝方法。git

按照安裝教程下載二進制文件,而後解壓到任意目錄下:github

· 配置環境變量:spring

ROCKETMQ_HOME
E:\rocketMQ\rocketmq-all-4.4.0-bin-release    // 文件解壓的路徑

完成配置後最好重啓下計算機!!!!!!!!不重啓可能存在找不到環境變量的錯誤。apache

· 啓動服務:windows

在你安裝目錄的bin文件夾下打開命令窗口。app

首先啓動 namesrvspring-boot

start mqnamesrv.cmd

請勿關閉此命令框ui

啓動broker

start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true

請勿關閉此命令框

假如彈出提示框提示‘錯誤: 找不到或沒法加載主類 xxxxxx’。打開runbroker.cmd,而後將‘%CLASSPATH%’加上英文雙引號。保存並從新執行start語句。

若是出現內存不夠的錯誤,請確保機器有足夠的運行內存,而後從新啓動。

RocketMQ插件部署,這裏沒研究過,直接參照別人的吧。

========================================================================================

開始正事,官方地址

如下spring boot的版本都是2.1.4.RELEASE

· 搭建生產者(producer),也就是消息發送者

加入pom

<dependency>
   <groupId>org.apache.rocketmq</groupId>
   <artifactId>rocketmq-spring-boot-starter</artifactId>
   <version>2.0.3</version>
</dependency>
## application.properties
rocketmq.name-server=127.0.0.1:9876
rocketmq.producer.group=my-group

新建一個controller來作消息發送:

@RestController
public class SendMessageApi {
    
    @Resource
    private RocketMQTemplate rocketMQTemplate;
    
    @GetMapping(value = "/send/{message}")
    public String echo(@PathVariable String message) {
        // // 往主題test-topic-1直接發送Hello, World!
        // rocketMQTemplate.convertAndSend("test-topic-1", "Hello, World!");

        // 往主題test-topic-1發送message
        rocketMQTemplate.send("test-topic-1", MessageBuilder.withPayload(message).build());

        // // 往主題test-topic-2發送對象,這裏對象是本身自定義的dto,須要序列化
        // MessageDto messageDto = new MessageDto();
        // messageDto.setXXX("");
        // ...
        // rocketMQTemplate.convertAndSend("test-topic-2", messageDto);
        System.out.println("消息發送成功.........");
        return message;
    }
    
}

· 搭建消費者(consumer),也就是消息接收者

加入pom

<dependency>
   <groupId>org.apache.rocketmq</groupId>
   <artifactId>rocketmq-spring-boot-starter</artifactId>
   <version>2.0.3</version>
</dependency>
## application.properties
rocketmq.name-server=127.0.0.1:9876
// 接收string類型消息
    @Service
    @RocketMQMessageListener(topic = "test-topic-1", consumerGroup = "my-consumer_test-topic-1")
    public class MyConsumer1 implements RocketMQListener<String>{
        public void onMessage(String message) {
            System.out.println("received message: " + message);
        }
    }
    // 接收對象類型的消息
    @Service
    @RocketMQMessageListener(topic = "test-topic-2", consumerGroup = "my-consumer_test-topic-2")
    public class MyConsumer2 implements RocketMQListener<MessageDto>{
        public void onMessage(MessageDto messageDto) {
            System.out.println("received messageDto: " + messageDto.toString());
        }
    }

簡單的消息發送與接收搭建完畢。

相關文章
相關標籤/搜索