如果要保证生产者的消息100%到达broker,是否需要使用acks或是事务?acks这种有办法只影响某个topic吗? 另外:kafka acks以及事务 幂等 这些 指的是 生产者到broker的范围,还是 生产者到消费者范围。
可以保证,但是会导致消息重复。
首先生产者和消费者各管各的,彼此之间没有任何关联。
某些超时的情况下,生产者向kafka集群发送消息,一直无响应,你是无法确认消息是否发送成功的,如果重新发送则会造成消息双份,如果不发就可能丢失了。
消费者也是,拿到消息后,提交offset的时候失败了,但是消息你已经处理过了,新的消费者也将会再次消费,如果你先提交offset在处理,则有可能刚提交offset,程序崩溃了,导致新的消费者跳过了这条消息。
综上,想要
100%
的话,可能会导致消费重复。更多详情可参考:kafka消息传递保障
你的答案