Java 使用Reactive Redis

37 阅读1分钟

前言

目前项目中,有使用到 Redis 的需求。场景如下: 在使用消息队列时,难免会遇到重复消费的事情,因为队列本身不处理这个。 那么就可以使用 Redis 来做一个避免重复消费的操作。

假如你的消息队列是 rocket mq,在消息消费端,获取到的 MessageExt对象,可以拿到消息的 ID。 我们在刚拿到这个ID时,就立刻对其进行存储(可以拼接你自己的业务前缀)。 可以使用 redis 的 setIfAbsent ,也就是 setNx 命令。

在这里插入图片描述 每次能够用存储成功 MessageID时,再去执行消费。如果Redis中有了当前的 MessageId,就证明它是之前消费过的,就直接舍弃。从而达到了避免重复消费的效果。

代码

核心代码其实并不多,这里只提供一下公共的配置,以及方法。 代码仓库如下: gitee.com/fengsoshuai…

自定义业务

gitee.com/fengsoshuai…

对以上代码做了调整,主要是自定义了业务前缀,可以定制化自己的业务需求。 对应在Nacos中的配置如下: 在这里插入图片描述