Kafka篇——Java中实现生产者功能,手把手教学,满满干货!

Kafka在处理大数据量的场景非常优秀,下面介绍下它的优势有哪些:

1. 高吞吐量:Kafka能够处理大规模的消息流并实现高吞吐量的数据处理。它的设计目标之一就是支持每秒百万级的消息处理能力。

2. 可扩展性:Kafka支持横向扩展,可以轻松地通过增加更多的机器来扩展集群的处理能力。它可以平滑地扩展到大型的消息流处理系统。

3. 持久性:Kafka将消息持久化在磁盘上,确保消息不会丢失。它提供了可配置的保留策略,可以根据需求保存消息的时间长度或者大小。

4. 可靠性:Kafka采用分布式复制机制,将消息副本分布在多个节点上,确保消息的可靠传输。当一个节点发生故障时,仍然可以继续处理消息,而不会导致数据丢失。

5. 高可用性:Kafka采用多副本机制,保证了高可用性。当一个节点发生故障时,其他副本可以接管工作,保证系统的可用性。

6. 灵活性:Kafka不仅可以用作消息队列,还可以用作事件发布/订阅系统、日志收集系统等。它提供了丰富的API和工具,可以满足不同场景的需求。

优势介绍完毕,那么正题开始!以下内容为Java中实现生产者的创建和发送消息,希望大家上车后自信认真学习!

发车!

一、引入依赖
引入的依赖版本要与我们服务器中的Kafka版本一致

二、生产者发送消息基本实现

1、生产者端的同步发送消息
同步机制:

如果生产者发送消息后没有收到ACK,生产者会阻塞,阻塞3秒钟时间,如果还没有收到消息,会进行重试,重试次数为3次

实现代码:

控制台:

再次发送消息:

发现只有偏移量发生了变化,因为发送消息,消息未被消费,偏移量增加;而分区不变,是因为我们上面发送消息的key指定的是"mykey"没变,所以会根据规则hash(consumerGroupId)%_consumer_offsets计算分区数

指定分区的同步发送:
代码和上面的代码几乎相同,只是创建消息的时候调用ProducerRecord的重载方法,指定发送消息的分区

2、生产者端异步发送消息

异步机制:
异步发送,生产者发送完消息就可以执行后面的业务逻辑,不会等待消息发送完这段时间阻塞Broker在收到消息后会异步调用生产者提供的callBack回调方法

代码实现:

控制台:
正常情况下,控制台是不会打印"异步方式发送消息结果:......",因为执行完这个异步发送消息的方法时,主线程就会关闭,会由新的线程去异步执行发消息的方法,所以主线程是那不到这个打印的结果。所以需要在这个方法的后面让主线程休眠,才可以拿到打印结果

至此,关于Kafka在Java中配置生产者已经介绍完毕,后续还会持续更新,敬请期待~~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Be explorer

若认可笔者文章,手头富裕盼支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值