我正在实现一个基于kafka的应用程序,我想手动确认收到的消息。架构迫使我在一个单独的线程中完成它。
问题是:在与消费者不同的线程中执行Acknowledgement.acknowledge()是否可行且安全?
答案 0 :(得分:1)
是的,只要您使用MANUAL
而不是MANUAL_IMMEDIATE
,但我认为您不会得到您期望的结果。
Kafka不会跟踪每条消息,只会跟踪分区内的偏移量。
让我们说消息1到达,然后你交给另一个线程。然后消息2到达并且它被传递给另一个线程。
当消息2的偏移量被确认时,您实际上正在对这两个消息进行处理。