【发布时间】:2021-07-14 09:21:05
【问题描述】:
我需要批量消费来自 jetstream 的流,并将批量存储在数据库中,并在数据库批量插入后确认, 此时我使用拉消费者,存储所有消息并在成功批量插入时一一提交。 我需要确认所有消息吗?,我看到我可以提交最新消息,但为此我需要处于消费者推送模式
【问题讨论】:
我需要批量消费来自 jetstream 的流,并将批量存储在数据库中,并在数据库批量插入后确认, 此时我使用拉消费者,存储所有消息并在成功批量插入时一一提交。 我需要确认所有消息吗?,我看到我可以提交最新消息,但为此我需要处于消费者推送模式
【问题讨论】:
ConsumerConfiguration.AckWait 可能是你需要的。
对于拉取模式,要求您确认每条消息。您可以将 AckWait 设置为更长的持续时间,这应该给您足够的时间来确保您的批量存储正常工作,然后返回并单独确认消息。
如果您使用推送模式,您可以使用AckPolicy.All 并设置AckWait 更长的时间。然后,您可以在推送模式下读取消息(看起来一次一条消息,但服务器实际上已将许多消息推送到客户端并且客户端正在缓冲它们。)一旦您收集了您想要的消息数量写入数据库,可以批量写入,知道数据库写入成功后,可以确认最后一条消息。
【讨论】: