0

我正在尝试使用 Reddison lib 将流与 redis 一起使用。我code StreamReadGroupArgs.neverDelivered()在接收消息时使用。但是,如果我不确认它,那么下次调用 readGroup 时它就不会收到这些消息。问题是如果节点崩溃或网络出现故障而我无法处理这些消息怎么办。然后,即使我没有确认它,我也不会再收到这些消息。是否有解决方法或我可以做的其他事情?

4

1 回答 1

1

这是正确的行为。否则,您最终每次都会收到多余的消息。

要么您必须确认,要么您必须明确要求 redis 重新发送您尚未确认的消息。因为那StreamReadGroupArgs.neverDelivered()不是一个正确的选择。因为已经发货了。但是你不知何故丢失了信息。

您的用例的正确选项是以下选项,它将发送未确认的消息。

StreamReadGroupArgs.greaterThan(new StreamMessageId(0))

于 2021-09-24T17:16:26.623 回答