使用 nats jetstream 批量消费和提交的最佳方法是什么

问题描述

我需要批量消费来自 jetstream 的流,并将批量存储在数据库中,并在数据库批量插入后确认, 此时我使用拉取消费者,存储所有消息并在成功批量插入时按 1 提交。 我需要确认所有消息吗?,我看到我可以提交最新消息,但为此我需要处于消费者推送模式

解决方法

ConsumerConfiguration.AckWait 可能正是您所需要的。

对于拉模式,要求您​​确认每条消息。您可以将 AckWait 设置为更长的持续时间,这样您就有足够的时间确保批量存储正常工作,然后返回并单独确认消息。

如果您使用推送模式,您可以使用 AckPolicy.All 并将 AckWait 设置得更长一些。然后,您可以在推送模式下读取消息(看起来一次一条消息,但服务器实际上已将许多消息推送到客户端,并且客户端正在缓冲它们。)一旦您收集了您想要的消息数量写入数据库,可以批量写入,知道数据库写入成功后可以确认最后一条消息。