Kafka Producer+Consumer

1.启动zookeeper及Kafka:

cd /usr/kafka
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties

2. 编写Producer:

acks:-1代表所有broker都收到消息了,leader再返回响应
retries:代表错误重试次数
batch.size:代表一批消息的大小
linger.ms:代表每10ms即使batch未满也发送消息
buffer.memory:缓冲区大小
max.block.ms:缓冲区满后阻塞3s
3.编写Consumer:
ConsumerRunnable:

ConsumerGroup:

主类:

设置3个线程轮询
4.运行测试:
问题1:报错:

根据错误信息,是Listener设置错误,导致消息发送失败
修改server.properties:
取消listeners一行注释,并修改成listeners=PLAINTEXT://localhost:9092

重启kafka,重新运行,发送成功

问题2:只有Thread-1收到消息,且分区全部为0,使用jconsole看到确实启动了三个线程,并且全部处于RUNNABLE
原因:没有配置分区,或者没有为producer配置分区机制
运行命令:

bin/kafka-topics.sh --zookeeper localhost:2181 --alter --partitions 20 --topic test 

设置分区数量


在Producer中添加分区器:

properties.put("partitioner.class","org.apache.kafka.clients.producer.internals.DefaultPartitioner");

除此之外不需要任何修改,重新运行

猜你喜欢

转载自blog.csdn.net/u010670411/article/details/83477625