首页 > 解决方案 > 如何检查 Redis 中是否存在消费者组?

问题描述

目前我正在寻找优雅的解决方案来检查 Redis 流中的消费者组是否已经存在。

我有几个模块连接到同一个流并从中读取数据。但是他们可以以不同的顺序开始,如果没有创建消费者组 - 尝试创建它。如果第一个模块创建了组,则根据文档,其他模块会出错。

从文档中:

如果指定的消费者组已经存在,该命令将返回 -BUSYGROUP 错误。

我想避免这个错误。

我使用 Jedis 客户端与 Redis 一起工作。我知道有XINFO命令(可以返回组列表),但是当 Redis 在集群模式下启动时它不起作用(这可以是我的配置之一)。

标签: redisjedis

解决方案


没有其他方法,正如您在问题中所述,有两种选择:

  1. XGROUP CREATE并在组已经存在的情况下捕获错误。
  2. XINFO STREAM并查找该组,但这不是原子的,并且可能会在您获取信息后立即调用并行组创建。

推荐阅读