问题描述
当前,我正在寻找宽松的解决方案,以检查Redis流中的消费者组是否已经存在。
我有一些模块可以连接到相同的流并从中读取数据。但是它们可以以不同的顺序启动,并且在未创建消费者组的情况下-尝试创建它。 如果第一个模块创建了组,则其他模块会根据文档显示错误。
从文档中:
如果指定的使用者组已经存在,该命令将返回-BUSYGROUP错误。
我想避免这个错误。
我使用Jedis客户端与Redis一起工作。
我知道有XINFO
命令(可以返回组列表),但是在集群模式下启动Redis(它可以是我的配置之一)时,它不起作用。
解决方法
别无他法,因为您已经回答了问题,有两种选择:
-
XGROUP CREATE
,并在该组已经存在的情况下捕获错误。 -
XINFO STREAM
并查找组,但这并不是原子的,创建并行组可能会在您获取信息后立即调用。