Springboot快速集成阿里云RocketMq
前言
随着互联网的兴起,越来越多的用户开始享受科技带来的便利,对于服务的压力也日益增大,随即便有了高并发、高性能、高可用等各种解决方案,这里主要介绍RocketMq的集成方法。(文末附源码地址)
正文
1、添加依赖
<!-- RocketMQ依赖 -->
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>ons-client</artifactId>
<version>1.8.4.Final</version>
</dependency>
2、添加RocketMq配置
## 阿里RocketMQ配置
rocketmq:
## 连接点地址 参考控制台实例详情
name-server: xxx.rmq.aliyuncs.com:8080
access-key: xxx
secret-key: xxx
## 自行在阿里云控制台添加group和topic
group: test_group
topic: test_topic
配置类:
@Data
@Configuration
@ConfigurationProperties(prefix = "rocketmq")
public class RocketMqConfig { private String nameServer; private String accessKey; private String secretKey; @Bean
public Properties build() {
Properties properties = new Properties();
properties.setProperty(PropertyKeyConst.AccessKey, accessKey);
properties.setProperty(PropertyKeyConst.SecretKey, secretKey);
properties.setProperty(PropertyKeyConst.NAMESRV_ADDR, nameServer);
return properties;
} }
3、生产端代码(配置+发送消息)
@Autowired
RocketMqConfig rocketMqConfig; @Value("${rocketmq.group}")
private String group; @Bean(initMethod = "start", destroyMethod = "shutdown")
public ProducerBean buildProducer() {
ProducerBean producer = new ProducerBean();
//配置文件
Properties properties = rocketMqConfig.build();
//设置发送超时时间,单位毫秒
properties.setProperty(PropertyKeyConst.SendMsgTimeoutMillis, "3000");
//设置组id
properties.setProperty(PropertyKeyConst.GROUP_ID, group);
producer.setProperties(properties);
return producer;
}
public void sendAsyncMessage(String content, String topic) {
Message msg = new Message();
//设置主题和标签
msg.setTopic(topic);
msg.setTag("*");
msg.setBody(content.getBytes());
producer.sendAsync(msg, new SendAsyncMessage());
}
4、消费端代码(配置+接收消息)
@Configuration
public class ConsumerClient { @Value("${rocketmq.group}")
private String group;
@Value("${rocketmq.topic}")
private String topic; @Autowired
RocketMqConfig rocketMqConfig;
@Autowired
private MyRocketMessageListener messageListener; @Bean(initMethod = "start", destroyMethod = "shutdown")
public ConsumerBean buildConsumer() { //消费者对象bean
ConsumerBean consumerBean = new ConsumerBean();
//配置文件
Properties properties = rocketMqConfig.build();
//设置组id
properties.setProperty(PropertyKeyConst.GROUP_ID, group);
//将消费者线程数固定为20个 20为默认值
// properties.setProperty(PropertyKeyConst.ConsumeThreadNums, threadNum);
consumerBean.setProperties(properties); //配置订阅关系
Map<Subscription, MessageListener> subscriptionTable = new HashMap<>();
//当前为订阅一个主题配置(订阅多个topic一样设置)
Subscription subscription = new Subscription();
subscription.setTopic(topic);
subscription.setExpression("*");
subscriptionTable.put(subscription, messageListener);
consumerBean.setSubscriptionTable(subscriptionTable);
return consumerBean;
}
}
@Slf4j
@Configuration
public class MyRocketMessageListener implements MessageListener { @Override
public Action consume(Message message, ConsumeContext context) { // 业务处理逻辑
log.info(">>>>> 【消费者】系统时间:[{}]接收消息MsgId=[{}],消息内容:{}", LocalDateTime.now(), message.getMsgID(), new String(message.getBody(), StandardCharsets.UTF_8));
try {
// todo 业务逻辑处理
return Action.CommitMessage;
} catch (Exception e) {
//消费失败
log.error(">>>>> 【消费者】系统时间:[{}]处理消息MsgId=[{}], 当前消费失败, 开始重试......!", LocalDateTime.now(), message.getMsgID());
return Action.ReconsumeLater;
}
}
}
5、接口
@RestController
@RequestMapping("test")
public class MqTest { @Value("${rocketmq.topic}")
private String topic; @Autowired
RocketMQUtil rocketMQUtil; @RequestMapping("mq")
public String testMq(@RequestParam("content") String content) {
rocketMQUtil.sendAsyncMessage(content, topic);
return "success";
} }
6、测试验证
①启动项目

②调用接口
浏览器:http://localhost:8080/test/mq?content=testPush

观察后端日志:

至此,接入完成。
附:
源码地址:https://gitee.com/yhc910/RocketMq-Demo
Springboot快速集成阿里云RocketMq的更多相关文章
- 阿里云RocketMQ定时/延迟消息队列实现
新的阅读体验:http://www.zhouhong.icu/post/157 一.业务需求 需要实现一个提前二十分钟通知用户去做某件事的一个业务,拿到这个业务首先想到的最简单得方法就是使用Redis ...
- [原创]阿里云RocketMQ踩过的哪些坑
由于公司的最近开始使用RocketMQ来做支付业务处理, 便开启了学习阿里云RocketMQ的学习与实践之路, 其中踩了不少的坑, 大部份是由于没有仔细查看阿里云的技术文档而踩的坑. 但是有一个非常大 ...
- spring boot集成阿里云短信发送接收短信回复功能
1.集成阿里云通信发送短信: 在pom.xml文件里添加依赖 <!--阿里短信服务--> <dependency> <groupId>com.aliyun</ ...
- 阿里云RocketMQ的生产者简单实现
// MQ的应用场景有比如 订单变更消息可以通过产生这个事件的地方(比如前端调用后端的接口post一个订单,那么就是在这个mapping方法里做一个生产者[不过最好通过aop来实现,不然n多个接口都要 ...
- Springboot下实现阿里云短信验证功能(含代码)
Springboot下实现阿里云短信验证功能 一 开通阿里云短信服务 阿里云官网注册登录 找到短信服务并开通 打开短信服务的管理台 在国内消息那栏中添加签名管理和模板管理(按照格式要求去写) 在右上角 ...
- 在线工具生成接入信息mqtt.fx快速接入阿里云
在线工具生成接入信息mqtt.fx快速接入阿里云 在使用阿里云获取的三元组信息进行接入的时候,往往需要加密生成接入信息之后才能进行接入,因此我根据阿里云提供的加密工具实现了一个阿里云物联网平台mqtt ...
- django之集成阿里云通信(发送手机短信验证码)
python3 + django2.0 集成 "阿里云通信" 服务: (SDK文档地址:https://help.aliyun.com/document_detail/55491. ...
- Springboot集成阿里云短信
目录 1 前言 2 准备工作 2.1 了解流程 2.2 配置信息 2.3 短信签名和模板 2.3.1 签名 2.3.2 模板 2.3.3 存入数据库 3 SDK 4 集成Springboot 4.1 ...
- Springboot项目之阿里云OSS快速入门
阿里云oss 阿里云对象存储服务(Object Storage Service,简称OSS),是阿里云对外提供的海量.安全.低成本.高可靠的云存储服务.您可以通过本文档提供的简单的REST接口,在任何 ...
- Spring boot实战项目整合阿里云RocketMQ (非开源版)消息队列实现发送普通消息,延时消息 --附代码
一.为什么选择RocketMQ消息队列? 首先RocketMQ是阿里巴巴自研出来的,也已开源.其性能和稳定性从双11就能看出来,借用阿里的一句官方介绍:历年双 11 购物狂欢节零点千万级 TPS.万亿 ...
随机推荐
- 后浪搞的在线版 Windows 12「GitHub 热点速览」
本周比较火的莫过于 3 位初中生开源的 Windows 12 网页版,虽然项目完成度不如在线版的 Windows 11,但是不妨一看.除了后生可畏的 win12 之外,开源不到一周的 open-int ...
- Understanding UML in seconds
UML 是一种分析设计语言,也就是一种建模语言. UML结构解析 UML其结构主要包括以下几个部分: 视图(View) 多个图形组成的集合: 图(Diagram) 图的种类有13种图,但常用的也就两种 ...
- 5-MySQL列定义
1.列定义 说明:在MySQL中,列定义(Column Definition)是用于定义数据库表中每一列的结构的语句.它指定了列的名称.数据类型.长度.约束以及其他属性. 2.主键和自增 主键:PRI ...
- web应用及微信小程序版本更新检测方案实践
背景: 随着项目体量越来越大,用户群体越来越多,用户的声音也越来越明显:关于应用发版之后用户无感知,导致用户用的是仍然还是老版本功能,除非用户手动刷新,否则体验不到最新的功能:这样的体验非常不好,于是 ...
- 用 Dijkstra 算法解决最短路问题
话不多说,先看图 1.1 朴素版的Dijkstra算法 一般用到这个情况稠密图,也就是节点的个数比边的个数少. (稠密图用邻接矩阵存储) #include<cstring> #includ ...
- Python正则表达式——常用re正则表达式集合
文章目录 一.校验数字的表达式 二.校验字符的表达式 三.特殊需求表达式 一.校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^ ...
- isHex
public class Test { public static boolean isHex(String str) { boolean isHexFlg = true; int i = 0; ch ...
- 0 基础晋级 Serverless 高手课 — 初识 Serverless(下)
冷启动 1. 流量预测 2. 提前启动 3. 实例复用 每个厂商规范不一致:,兼容,适配层:adapter: fs+oss 云厂商对比 产品维度 功能架构角度 个人博客官网 小程序 ...
- C# ref, in, out关键字
写在前面:大内老A的这篇"老生常谈:值类型VS引用类型"放在微信收藏里好几个月了,终于趁着要讲JAVA传参机制的时候仔细地按照这篇博客,自己写代码跑一下,对C#的传参,ref,in ...
- 后缀自动机 (SAM) 的构造及应用
cnblogs 怎么又炸了. 为什么又可爱又强的 xxn 去年 9 月就会的科技樱雪喵现在还不会呢 /kel. 感觉 SAM 的教程已经被前人写烂了啊.那就写点个人学习过程中对 SAM 的理解. 参考 ...