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");

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值