一、开发环境
1.IDE:IDEA 2017
2.JDK:1.8
3.浏览器:谷歌浏览器
(本文不说明rocketMQ的部署)
二、初始化项目
添加pom依赖
使用IDEA新建springboot项目,在pom文件中引入以下依赖:
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-common</artifactId>
<version>4.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.3.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.49</version>
</dependency>
RocketMq概念
不做复杂介绍了,简单来说,就是消息中间件,角色有消息生产者和消息消费者。
简单的来说就像是QQ聊天,聊天窗口发送你好,就是创建一条“你好”的消息到中间件(rocketMq),因此你就是这条消息的生产者(producer),你的好友接收到这条“你好”的消息,那么他就是这条消息的消费者(consumer)。
若想要详细了解RocketMQ,点此进入。
SpringBoot配置文件
IDEA默认的springboot项目使用的是application.properties,我改成了application.yml。(个人比较喜欢yml形式的配置文件,改不改看心情)
rocketmq:
consumer:
# RocketMQ的请求地址
namesrvAddr: 127.0.0.1:9876
# 发送同一类消息的设置为同一个group,保证唯一,默认不需要设置,rocketmq会使用ip@pid(pid代表jvm名字)作为唯一标示
groupName: test-demo
#如果需要同一个jvm中不同的producer往不同的mq集群发送消息,需要设置不同的instanceName
instanceName: consumer.demo
producer:
#发送消息超时时间
sendMsgTimeout: 10000
#maxMessageSize最大消息限制
maxMessageSize: 999999999
#消息大小超出配置对消息压缩
compressOver: 40000
topic: test-demo
# 不配置为订阅全部tag,多个行业用 "||" 分隔, 如:"0||1||2"
tag: "111"
三、开始项目代码编写
活用Spring的注释生成生产者与消费者的Bean
我创建了一个配置类,程序启动时会自动装配生产者与消费者的Bean。
package com.example.demo.config;
import com.alibaba.fastjson.JSONException;
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org