2016-02-24 201 views
0

想知道是否有可能通过卡夫卡消费者(Java客户端)并行读取和处理多条消息..我的意思是使用多线程...我应该使用rxJava吗?卡夫卡消费者可以并行处理多条消息

1)这是一个很好的方法吗? 2)而且根据我的理解,卡夫卡甚至将每个线程视为消费者...请纠正我,如果我错了...

3)并且还希望使Java客户端作为守护程序服务在Linux中运行,这样它连续运行,并轮询卡夫卡的消息,阅读和处理相同..这是一个很好的方法..

回答

1

卡夫卡支持并行处理消息的分区,你可以启动几个消费者,一个或多个分区对于一个kafka客户端,kafka也可以通过此模式支持同一分区中的序列处理。

当然,您可以启动多个线程来处理一个使用者中的多个消息,但不能确保一个分区中的顺序处理。

+0

Lemme明白,所以如果我有3个消费者(同一组)和3个分区,每个分区将被分配给消费者......现在,每个消费者一次只能读取和处理一条消息..因为我有3个消费者一个时间只有3个消息被处理正确??并没有得到你的答案的第二部分,如“在一个分区中的序列处理不能保证”这是如何影响消费者,因为它总是读取不知道从哪个消息分区它来自.. – shiv455

+0

(1)没错。 (2)只有一个分区将分配给一个用户,因此可以顺序处理同一分区中的消息。 – Joey

+0

当你说“所以同一分区中的消息可以按顺序处理”时,我们无法实现高吞吐量。如果消费者一次只处理一条消息,例如,制作者每秒发布40msgs ...但消费者每秒只能处理1 msg ...尽管我们有多个消费者假设如果我们有10个消费者,它每秒会有10条消息...... ????? – shiv455