1

我有一个相当原始的流用例:多个生产者和 1 个消费者定期批量处理消息。有时会有超过 1 个消费者,这就是为什么我想从“传统”不可靠队列 (rpush/lrange/ltrim) 切换到流。

实际上有2个相关问题:

  1. 使用 Redis 消费者组时,我必须指定组名和消费者名。使用一些硬编码字符串作为组名和一些随机字符串作为消费者名称,这是个好主意吗?消费者只是 1 个进程,在这种情况下,它的名称在每次启动时都会有所不同。在极少数情况下,一次会有 2 个或更多消费者。

  2. 必须先创建消费者组,xgroup create然后才能xreadgroup从中创建。每次新的消费者启动(使用随机名称)时,它都会被添加到消费者列表中,但即使在进程终止后它仍然存在。我的理解是,在这种情况下,我需要将所有来自死亡消费者的待处理消息重新分配给活动消费者,然后删​​除旧消费者。它是否正确?

4

1 回答 1

2
  1. 是的,这是正确的方法。
  2. 再次正确。这里的基本逻辑是调用XPENDING后跟XCLAIMXGROUP DELCONSUMER最后)。请注意,即将推出的 Redis 6.2(当前为 RC2)通过新XAUTOCLAIM命令和添加的XGROUP CREATECONSUMER.
于 2021-01-13T13:42:33.953 回答