前言

RocketMQ是一个由阿里巴巴开源的消息中间件,脱胎于阿里内部使用的MetaQ,本文主要是写个小例子演示一下消息从生产到消费的过程。

RocketMQ下载和安装

下载地址 http://rocketmq.apache.org/release_notes/release-notes-4.5.0/

安装和配置 https://blog.csdn.net/u010391342/article/details/82150062

注意一下,启动Broker的时候用此命令避免出现找不到topic的情况 mqbroker.cmd -n localhost:9876 autoCreateTopicEnable=true

RocketMQ整合

文件改动如下

@Service
public class DeptServiceImpl implements DeptService {
@Autowired
DeptDOMapper deptDOMapper; @Autowired
Producer producer;
@Override
public List<DeptInfo> listDeptInfo(String name) { producer.sendMessage(String.valueOf(RandomUtils.nextLong(0,100000)),"查询部门列表,参数:"+name);
List<DeptDO> deptDOList = deptDOMapper.listDept(name);
List<DeptInfo> deptInfos = new ArrayList<>();
deptDOList.stream().forEach(x -> {
DeptInfo info = new DeptInfo();
info.setName(x.getName());
info.setId(x.getId());
deptInfos.add(info);
}); }
}

DeptServiceImpl.java

@Component
public class Consumer {
/**
* 消费者的组名
*/
@Value("${apache.rocketmq.consumer.PushConsumer}")
private String consumerGroup; /**
* NameServer地址
*/
@Value("${apache.rocketmq.namesrvAddr}")
private String namesrvAddr; @PostConstruct
public void defaultMQPushConsumer() {
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(consumerGroup);
consumer.setNamesrvAddr(namesrvAddr);
try {
//订阅PushTopic下Tag为push的消息
consumer.subscribe("PushTopic", "push");
consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
consumer.registerMessageListener((MessageListenerConcurrently) (list, context) -> {
try {
for (MessageExt messageExt : list) {
String messageBody = new String(messageExt.getBody(), "utf-8");
System.out.println("消费响应:MsgId: " + messageExt.getMsgId() + ",内容: " + messageBody);
}
} catch (Exception e) {
e.printStackTrace();
return ConsumeConcurrentlyStatus.RECONSUME_LATER;
}
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
});
consumer.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}

Consumer.java

@Component
public class Producer { /**
* 生产者的组名
*/
@Value("${apache.rocketmq.producer.producerGroup}")
private String producerGroup; /**
* NameServer 地址
*/
@Value("${apache.rocketmq.namesrvAddr}")
private String namesrvAddr; private DefaultMQProducer producer; public boolean sendMessage(String key, String message) {
try {
Message ms = new Message();
ms.setKeys(key);
ms.setTags("push");
ms.setTopic("PushTopic");
ms.setBody(message.getBytes("UTF-8"));
SendResult result = producer.send(ms);
System.out.println("发送消息:MsgId:" + result.getMsgId() + ",发送状态:" + result.getSendStatus());
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
@PostConstruct
public void defaultMQProducer() {
//生产者的组名
producer = new DefaultMQProducer(producerGroup);
//指定NameServer地址,多个地址以 ; 隔开
producer.setNamesrvAddr(namesrvAddr);
try {
producer.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}

Producer.java

     <dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-common</artifactId>
<version>4.4.0</version>
</dependency>

pom.xml

# 消费者的组名
apache.rocketmq.consumer.PushConsumer=PushConsumer # 生产者的组名
apache.rocketmq.producer.producerGroup=Producer # NameServer地址
apache.rocketmq.namesrvAddr=127.0.0.1:9876

rabbitmq.properties

applicationContext.xml加入以下配置

 <!-- 加载配置文件 -->
<context:property-placeholder location="classpath:rabbitmq.properties" ignore-unresolvable="true"/>

运行跑起来,在控制台会看到

发送消息:MsgId:1E66D026378000D8E96F32ACEE480000,发送状态:SEND_OK
消费响应:MsgId: 1E66D026378000D8E96F32ACEE480000,内容: 查询部门列表,参数:1

SSM整合RocketMQ的更多相关文章

  1. Maven + 最新SSM整合

    . 1. 开发环境搭建 参考博文:Eclipse4.6(Neon) + Tomcat8 + MAVEN3.3.9 + SVN项目完整环境搭建 2. Maven Web项目创建 2.1. 2.2. 2. ...

  2. SSM整合配置

    SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis) 使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有 ...

  3. SSM整合中遇到的不能扫描注解的bug

    我的开发环境为: ubuntu14.04LTS 64bit; Spring Tool Suite  3.5.0.RELEASE Maven 3.2.3 SSM整合中遇到的不能扫描注解的bug 最终解决 ...

  4. 基于Maven的SSM整合的web工程

    此文章主要有以下几个知识点: 一.如何创建 Maven的Web 工程 二.整合SSM(Spring,SpringMvc,Mybatis),包括所有的配置文件 三.用 mybatis 逆向工程生成对应的 ...

  5. ssm整合说明与模板-Spring Spring MVC Mybatis整合开发

    ssm整合说明 spring+spring mvc+mybatis 说明 源码下载 由于之前存在ssh框架,spring+struts+hibernate,其中spring负责aop与ioc,所以一般 ...

  6. 04.redis集群+SSM整合使用

    redis集群+SSM整合使用 首先是创建redis-cluster文件夹: 因为redis最少需要6个节点(三主三从),为了更好的理解,我这里创建了两台虚拟机(192.168.0.109 192.1 ...

  7. SSM整合---实现全部用户查询

    SSM整合 准备 1.创建工程 2.导入必须jar包 链接: https://pan.baidu.com/s/1nvCDQJ3 密码: v5xs 3.工程结构 代码 SqlMapConfig < ...

  8. spring MVC框架入门(外加SSM整合)

    spring MVC框架 一.什么是sping MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 W ...

  9. SpringMVC之简单的增删改查示例(SSM整合)

    本篇文章主要介绍了SpringMVC之简单的增删改查示例(SSM整合),这个例子是基于SpringMVC+Spring+Mybatis实现的.有兴趣的可以了解一下. 虽然已经在做关于SpringMVC ...

随机推荐

  1. iClap的名字是怎么来的,clap是有什么特殊的意义么?

    iClap的名字来源于:Clap中文是鼓掌的意思,鼓掌代表合拍,一个团队的价值观以及工作方式合拍,是最重要的,当项目启动时,大家对产品认可,鼓掌开始实施:当项目成功上线,团队也会以鼓掌的形式庆祝:当我 ...

  2. maven install jdk版本自动降为1.7

    开发过程中遇到了一个奇怪的现象. IDEA中所有的设置都改成了1.8,但是在执行maven install时却自动降为1.7,报错提示: [ERROR] Failed to execute goal ...

  3. 滑块控件CCControlSlider

    #include "cocos-ext.h" //包含头文件 using namespace cocos2d::extension;//引用命名空间 /** * 创建CCContr ...

  4. linux配置Nginx启动,停止

    Nginx 启动.重启.停止脚本   第一步 先运行命令关闭nginx sudo kill `cat /usr/local/nginx/logs/nginx.pid`   第二步 vi /etc/in ...

  5. linux go with vscode

    1 install go apt install golang 将会同时安装下列软件:  golang-1.9 golang-1.9-doc golang-1.9-go golang-1.9-src ...

  6. linux下安装mysql详细步骤

    最近买了个阿里云服务器,搭建mysql环境. 该笔记用于系统上未装过mysql的干净系统第一次安装mysql.自己指定安装目录,指定数据文件目录. linux系统版本: CentOS 7.3 64位 ...

  7. zabbix分布式监控系统安装配置

    zabbix简介: zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵 ...

  8. chrome中,BackstopJS 使用cookie文件后依旧提示需要登录

    1. 本地环境: apache-tomcat:7.05,jdk8, backstopJS:latest-version 配置tomcat管理用户成功:手工访问tomcat应用内部服务正常: 2.  问 ...

  9. 防止XSS攻击的方式

    主要有三种请求方式,进行过滤替换非法符号 1.普通的GET请求数据: 2.FORM表单提交数据: 3.Json格式数据提交: 把下面5个文件放入项目中即可 package com.joppay.adm ...

  10. mysql慢查询和php-fpm慢日志

    MySQL慢查询 在web开发中,我们经常会写出一些SQL语句,一条糟糕的SQL语句可能让你的整个程序都非常慢,超过10秒一般用户就会选择关闭网页,如何优化SQL语句将那些运行时间 比较长的SQL语句 ...