RabbitMQ?”“Kafka?”“RocketMQ?”...在日常学习与开发过程中,我们常常听到消息队列这个关键词。
消息队列MQ是大型分布式系统不可缺少的中间件,也是高并发系统的基石中间件,所以掌握好消息队列MQ就变得极其重要。
下文我们主要讲讲HZERO如何使用Redis来实现消息队列。
消息队列组件概述
消息队列(Message Queue,简称MQ),指保存消息的一个容器,本质是个队列。
消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。
应用场景
1、希望是快产快消的即时消费场景,并且生产的消息立即被消费者消费掉
2、允许出现消息丢失的场景
3、不需要系统保存发送过的消息,做到来无影去无踪
4、需要处理的数据量并不是那么巨大
Redis队列集成
概念
-
RedisHelper封装了Redis操作的常用方法
-
提供了基于Redis的消息队列工具
-
多数据源,动态切换 Reids DB
组件坐标
<dependency>
<groupId>org.hzero.starter</groupId>
<artifactId>hzero-starter-redis</artifactId>
</dependency>
开发示例
Yaml
hzero:
redis:
# 开启消息队列, 默认值false
redis-queue: true
# 消息队列默认使用的db, 默认值1
queue-db: 1
生产者
调用Org.hzero.core.redis.RedisQueueHelper的Push或PushAll方法,可以将消息推送到消息队列。其中Key是消息队列的消息分组标识,需要全局唯一。
消费者
-
逐条消费
实现接口Org.hzero.core.redis.handler.IQueueHandler,类添加注解Org.hzero.core.redis.handler.QueueHandler,Value指定消息生产者对应的Key
@QueueHandler("demo")
public class DemoListener implements IQueueHandler {
@Override
public void process(String message) {
System.out.println(message);
}
}
-
批量消费
实现接口Org.hzero.core.redis.handler.IBatchQueueHandler,类添加注解Org.hzero.core.redis.handler.QueueHandler,Value指定消息生产者对应的Key
@QueueHandler("demo")
public class DemoListener implements IBatchQueueHandler {
@Override
public void process(List<String> messages) {
for (String message : messages) {
System.out.println(message);
}
}
}
HZERO针对消息队列中间件提供快速集成的支持,而且提供了很多实现方法,接入即可使用,便于开发者使用Redis消息队列,以最小的代码量实现项目上的需求。
联系我们
产品试用请登录开放平台。请在 PC 端打开:
https://open.hand-china.com/market-home/trial-center/
产品详情请登录开放平台:
https://open.hand-china.com/document-center/
如有疑问登录开放平台提单反馈:
▲ 更多精彩内容,扫码关注 “四海汉得” 公众号