tag-service,,,] 1 --- [ntainer#7-0-C-1] org.apache.kafka.clients.NetworkClient : [Consumer clientId=consumer tag-service,,,] 1 --- [ntainer#7-0-C-1] org.apache.kafka.clients.NetworkClient : [Consumer clientId=consumer tag-service,,,] 1 --- [ntainer#7-0-C-1] org.apache.kafka.clients.NetworkClient : [Consumer clientId=consumer
| consumer-1 my-group | orders-topic | 1 | 80 | 100 | 20 | consumer -2 | /127.0.0.1 | consumer-2 my-group | orders-topic | 2 | 0 | 100
topic1-p4,topic1-p5,在 kafka 中,使用了 consumer-group 且该 group 下有三个 consumer,上文中提到,kafka 支持 reblance 机制,所以当 consumer -3 加入 consumer-group 的过程中,会动态分摊之前 consumer-1 的消费压力,表现为如上图右半部分所示,cousumer-1 消费 topic1-p1 和 ropic1-p2,consumer
CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID 0 5 5 0 consumer-1 1 5 5 0 consumer-1 2 5 5 0 consumer-1 3 5 5 0 consumer -2 4 5 5 0 consumer-2 CURRENT-OFFSET:指的是下一个未使用的offset。
按照上述例子来看,10/4=2,即表示每个消费者平均均摊2个queue;而10%4=2,即除了均摊之外,多出来2个queue还没有分配,那么,根据消费者的顺序consumer-1、consumer-2、 consumer-3、consumer-4,则多出来的2个queue将分别给consumer-1和consumer-2。 最终,分摊关系如下: consumer-1:3个;consumer-2:3个;consumer-3:2个;consumer-4:2个,如下图所示: ? 这种算法最终分配的结果是: consumer-1: #0,#4,#8 consumer-2: #1, #5, # 9 consumer-3: #2,#6 consumer-4: #3,#7
42,875 INFO [Producer] 16 2017-03-22 22:07:42,883 INFO [Consumer-0] 16 2017-03-22 22:07:42,890 INFO [Consumer 43,884 INFO [Producer] 76 2017-03-22 22:07:43,888 INFO [Consumer-0] 76 2017-03-22 22:07:43,895 INFO [Consumer 44,889 INFO [Producer] 31 2017-03-22 22:07:44,891 INFO [Consumer-0] 31 2017-03-22 22:07:44,911 INFO [Consumer 45,892 INFO [Producer] 17 2017-03-22 22:07:45,894 INFO [Consumer-0] 17 2017-03-22 22:07:45,907 INFO [Consumer 53,967 INFO [Consumer-1] 47 2017-03-22 22:24:54,967 INFO [Producer] 14 2017-03-22 22:24:54,983 INFO [Consumer
Consumer协调器(ConsumerCoordinator)分配消费分区情况: 线程名称 消费者 分区 消费者-0 consumer-1 topic01的分区0,topic02的分区0 消费者-1 consumer 控制台有新的日志输出,可以看到ConsumerCoordinator重新分配了消费分区: 线程名称 消费者 分区 消费者-0 consumer-1 topic01的分区1,topic02的分区1 消费者-1 consumer
nullptr, consumer_func, (void *)"Consumer-1"); pthread_create(&c2, nullptr, consumer_func, (void *)"Consumer /ringqueue_test 运行结果(节选): Productor-1 生产数据:45 Productor-2 生产数据:78 Consumer-1 消费数据:45 Consumer-2 消费数据: 23 Productor-2 生产数据:91 Consumer-3 消费数据:23 Consumer-1 消费数据:91 Productor-1 生产数据:56 Productor-2 生产数据:88 Consumer
如果客户端不设置,则 KafkaConsumer 会自动生成一个非空字符串,内容形式如“consumer-1”、“consumer-2”,即字符串“consumer-”与数字的拼接。
同样是三个消费者先后加入同一个消费者组后的分区情况: 从图中可以看出,与前面的RoundRobinAssignor相比,第三个消费者(consumer-2)加入后,前两个消费者的分区几乎没有变动。
如果客户端不设置,则 KafkaConsumer 会自动生成一个非空字符串,内容形式如“consumer-1”、“consumer-2”,即字符串“consumer-”与数字的拼接。
] Greetings from [consumer-0] [1532099804] Greetings from [consumer-1] [1532099804] Greetings from [consumer ] Greetings from [producer-1] [1532099143] Greetings from [consumer-1] [1532099143] Greetings from [consumer
kafka-console-consumer.sh --bootstrap-server localhost:9092 --consumer-property group.id=testGroup --topic test test msg consumer bootstrap-server localhost:9092 --consumer-property group.id=testGroup --consumer-property --topic test test 123 consumer
Greetings from [consumer-0] 4[1532099804] Greetings from [consumer-1] 5[1532099804] Greetings from [consumer Greetings from [producer-1] 2[1532099143] Greetings from [consumer-1] 3[1532099143] Greetings from [consumer
请看下面的2个例子 case consumer-0 consumer-1 consumer-2 选中策略 case-1 roundrobin,rang rang,roundrobin,strick roundrobin
127.0.0.1 consumer-1 my-topic 2 2 3 1 consumer-2-9bb2 /127.0.0.1 consumer
client.id:客户端id,如果不设置,会自动生成一个非空字符串,内容形式为consumer-1,consumer-2这种格式。 消费者客户端参数众多,在这里罗列讲解没有意义,之后会一一详解。