我需要一批一批地使用jetstream中的流,并在数据库批量插入后确认地将批量存储在数据库中,此时我使用了pull consumer,存储所有消息,并在批量插入成功时逐个提交。我需要确认所有消息吗?我看到我可以提交最新的消息,但为此我需要处于消费者推送模式
发布于 2021-07-07 20:35:33
ConsumerConfiguration.AckWait可能就是您所需要的。
对于pull模式,要求您确认每条消息。您可以将AckWait设置为更长的持续时间,这将使您有足够的时间确保批量存储正常工作,然后返回并逐个确认消息。
如果您使用推送模式,则可以使用AckPolicy.All并将AckWait设置得更长。然后,您可以在推送模式下读取消息(看起来像是一次读取一条消息,但服务器实际上已经将许多消息推送到客户端,并且客户端正在缓冲这些消息)。一旦收集了要写入数据库的消息数量,就可以批量写入它们,然后可以在知道数据库写入成功时确认最后一条消息。
https://stackoverflow.com/questions/67174521
复制相似问题