我正在尝试使用Reddison lib在redis中使用streams。我接收消息时使用的是code StreamReadGroupArgs.neverDelivered()。但是如果我不确认它,那么下一次调用readGroup时,它就不会收到这些消息。问题是,如果节点崩溃或网络出现故障,而我无法处理这些消息,该怎么办?那么,即使我没有确认它,我也不会再次收到这些消息。有没有解决这个问题的办法,或者我可以做的其他事情?
发布于 2021-09-24 17:16:27
这是正确的行为。否则,你每次都会收到多余的消息。
要么你必须确认,要么你必须明确要求redis重新发送你没有确认的消息。因此,StreamReadGroupArgs.neverDelivered()不是一个正确的选项。因为它已经交付了。但你不知何故忘记了这一点。
对于您的用例,正确的选项是下面的选项,它将发送未确认的消息。
StreamReadGroupArgs.greaterThan(new StreamMessageId(0))
https://stackoverflow.com/questions/69307359
复制相似问题