这段时间项目上突然要说要用这个消息队列,所以得在项目上弄一下,而正好这个项目比较远古(ps:连boot项目都不是,就是个springmvc的项目,确实lj),没办法弄呗,所以先在本地先自己搭了个mvc的项目整合了下。
废话少说,直接进入正题,我本地是win10环境,首先先去下载安装rocketmq,去官网下载即可,
官网:https://rocketmq.apache.org/dowloading/releases/
选择windows环境的安装包下载即可,我选的是4.7.1的版本,下载解压的目录如图:
然后去配置环境变量,不然每次启动都需要指定ip,嫌麻烦的直接配置环境变量
ROCKETMQ_HOME D:\publicSoft\rocketmq\rocketmq-all-4.7.1
这里指定下mq的安装路径即可
还有这个
NAMESRV_ADDR 127.0.0.1:9876
然后再path里加上 %ROCKETMQ_HOME%\bin
接下来就可以去启动了,进入mq解压的路径,进入bin目录
可以通过命令行启动,我这里偷个懒直接双击启动了,注意先启动mqnamesrv再启动mqbroker
mqnamesrv窗口出现如下信息
mqbroker窗口出现如下信息
则表示两个服务启动成功了。
安装的ok了,接下来是重头戏:
首先先导入坐标:
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.7.1</version>
</dependency>
配置文件里设置一下mq信息
新增一个生产者类:
package com.mq.producter;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
/**
* @Auther: SPL
* @Date: 2019-07-09 13:57
* @Description: 初始化生产者
*/
public class RocketMQProducer {
private DefaultMQProducer defaultMQProducer;
private String producerGroup;
private String namesrvAddr;
/**
* Spring bean init-method 初始化
*/
public void init() throws MQClientException {
// 参数信息
System.out.println("DefaultMQProducer initialize!");
System.out.println(producerGroup);
System.out.println(namesrvAddr);
// 初始化
defaultMQProducer = new DefaultMQProducer(producerGroup);
defaultMQProducer.setNamesrvAddr(namesrvAddr);
defaultMQProducer.setInstanceName(String.valueOf(System
.currentTimeMillis()));
defaultMQProducer.start();
System.out.println("DefaultMQProudcer start success!");
}
/**
* Spring bean destroy-method
*/
public void destroy() {
defaultMQProducer.shutdown();
}
public DefaultMQProducer getDefaultMQProducer() {
return defaultMQProducer;
}
// ---------------setter -----------------
public void setProducerGroup(String producerGroup) {
this.producerGroup = producerGroup;
}
public void setNamesrvAddr(String namesrvAddr) {
this.namesrvAddr = namesrvAddr;
}
}
新增消费者类:
package com.mq.consumer;
import com.alibaba.fastjson.JSON;
import com.mq.dto.OrgChangeDto;
import com.mq.dto.RelationChangeDto;
import com.mq.dto.RoleChangeDto;
import com.mq.dto.UserChangeDto;
import com.mq.service.UserSyncCallbackService;
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq