diff --git a/mq/kafka/kafka-尚硅谷.md b/mq/kafka/kafka-尚硅谷.md index bb9e04d..8411914 100644 --- a/mq/kafka/kafka-尚硅谷.md +++ b/mq/kafka/kafka-尚硅谷.md @@ -454,6 +454,11 @@ kafka中的分区策略通过`partition.assignment.strategy`参数来进行配 > 在使用异步提交时,如果在发生rebalance之前(rebalance只能发生在poll过程中),commitAsync提交失败,由于commitAsync不会失败重试,故而在分区重新分配后,新分配到该分区的消费者实例将会重新消费之前未提交成功的消息,因此产生了消息的重复消费)。 > > 而同步提交时,commitSync在提交失败后会无限次重试,直到提交成功,故而在发生rebalance时(rebalance只能发生在poll的过程中),在发生rebalance之前,可以保证之前commitSync操作已经成功。 +> +> #### kafka commitSync +> kafka commitSync方法调用可以指定一个超时时间,在超过该超时事件后,会抛出TimoutException。如果调用该api时没有指定超时时间,会默认使用`default.api.timeout.ms`来作为超时时间,`default.api.timeout.ms`的默认值为1min。 +> +> **对于kafka commitSync方法,在超时前,都会一直对提交进行重试,直至提交成功或是发生不可恢复(unrecoverable)的异常。** > #### kafka的手动提交重试机制 > 针对kafka的手动提交,当使用`commitSync`进行同步提交时,如果提交失败,同步提交会无限次的进行重试,直到提交成功或是发生了不可恢复的异常。