我正在寻找一种“低成本”方法来在我不积极进行民意调查时让消费者保持活力。即,仍在处理上次轮询的记录,并且我不希望消费者连接超时。
一些看起来很有前途的功能:
在每种情况下,这都是 API 的非标准用法,因此我不确定这是否是一种合理/理性的方法。
RE:将连接超时设置得更高 - 我希望消费者在卡住时超时。我的问题涉及一个部分,我在其中获取了一组记录,并且单独的线程正在处理它们。
该文档似乎建议您应该致电pause(),然后继续积极轮询。如果您poll()在暂停时调用,则不会返回任何内容。
对于消息处理时间变化不可预测的用例,这些选项都可能不够。处理这些情况的推荐方法是将消息处理转移到另一个线程,这允许消费者在处理器仍在工作时继续调用 poll。必须注意确保承诺的偏移量不会超出实际位置。通常,您必须禁用自动提交,并仅在线程完成处理记录后手动提交记录的已处理偏移量(取决于您需要的传递语义)。另请注意,您需要暂停分区,以便在线程完成处理先前返回的记录之前不会从轮询中接收新记录。
的文档pause()证实了这一点:
暂停从请求的分区获取数据。未来对 poll(long) 的调用将不会从这些分区返回任何记录,直到使用resume(Collection) 恢复这些记录。注意,该方法不影响分区订阅。特别是,当使用自动分配时,它不会导致组重新平衡。
| 归档时间: |
|
| 查看次数: |
5421 次 |
| 最近记录: |