我有一个 Kafka 主题,并且已将 1 个消费者附加到它(主题只有 1 个分区)。现在对于超时,我使用默认值(心跳:3秒,会话超时:10秒,轮询超时:5分钟)。
根据文档,轮询超时定义消费者必须先处理消息,否则代理将从消费者组中删除该消费者。现在假设,消费者只需要1分钟就可以处理完消息。
现在我有两个问题
a) Now will it call poll only after 5 mins or it will call poll() as soon as it finishes processing.
b) Also, suppose consumer is sitting idle for sometime, then what would be the frequency of polling i.e. at what interval consumer will poll the broker for message? Will it be poll timeout or something else?
Run Code Online (Sandbox Code Playgroud)
我认为您所指的 5 分钟设置是max.poll.interval.ms,而不是轮询超时。
另外,我猜你是从 Java 调用 Kafka;如果您使用不同的语言,答案可能会有所不同。
轮询超时是您传递给 KafkaConsumer poll() 方法的值。这是调用 poll() 方法后它将阻塞的最长时间。
最大轮询间隔 5 分钟意味着您必须在上次调用 poll() 返回后 5 分钟内再次调用 poll()。如果不这样做,您的消费者将被断开连接。
所以你的问题是:
a) 现在它会仅在 5 分钟后调用 poll ,还是在处理完成后立即调用 poll() 。
这完全取决于你。您是用自己的代码进行调用的人。您应该有一个调用 poll() 的循环。
b) 另外,假设消费者闲置一段时间,那么轮询的频率是多少,即消费者以什么时间间隔轮询代理以获取消息?会是轮询超时还是其他原因?
消费者(即您自己的应用程序代码)不应该闲置,而应该处于循环中。在此循环中,您调用 poll(),然后处理事件(1 分钟),然后再次调用 poll()。
| 归档时间: |
|
| 查看次数: |
14535 次 |
| 最近记录: |