ack 如何适用于 Kafka 中的发布/订阅?



使用发布/订阅如何确认消息?

当消息发送给唯一组中的某些使用者时。这是否意味着如果所有消费者都确认消息或为所有消费者确认消息?

生产者

在生产者端,您可以选择等待代理确认消息已成功存储在主题中。您可以使用名为 acks 的生产者配置,并将其设置为值1all

acks=1:这意味着领导者会将记录写入其本地日志,但无需等待所有关注者的完全确认即可响应。在这种情况下,如果领导者在确认记录后立即失败,但在追随者复制记录之前,则记录将丢失。

acks=all:这意味着领导者将等待完整的同步副本集确认记录。这保证了只要至少有一个同步副本保持活动状态,记录就不会丢失。这是最有力的可用保证。这相当于 acks=-1 设置。

消费者

在消费者端,您有一个消费者组的概念,该组将偏移量提交回代理,确认消费者已处理哪些消息。每个使用者组将提交自己的抵消,确认它使用了它们。这独立于其他消费者组。

如果您有两个使用者组使用同一主题,则每个使用者组将根据其独立配置可靠地提交其偏移量。

默认情况下,使用者通过使用者配置enable.auto.commit自动将偏移量提交回 Kafka,auto.commit.interval.ms默认为 5 秒。或者,您可以根据使用者中的处理逻辑手动提交偏移量。

最新更新