加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡水站长网 (https://www.0318zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

这个GitHub 1.4k星的Git魔法书火了

发布时间:2021-02-13 11:56:28 所属栏目:传媒 来源:互联网
导读:topic和partition :分别代表消息要发往的主题和分区号; headers:消息的头部,不需要时可以不设置 key:用来指定消息的键,它不经是消息的附加消息,还可以用来计算分区号进而可以让消息发往特定的分区。 value:消息体,一般不为空,如果为空则表示特定的
  • topic和partition :分别代表消息要发往的主题和分区号;
  • headers:消息的头部,不需要时可以不设置
  • key:用来指定消息的键,它不经是消息的附加消息,还可以用来计算分区号进而可以让消息发往特定的分区。
  • value:消息体,一般不为空,如果为空则表示特定的消息 -- 「墓碑消息」
  • timestamp:消息的时间戳,它有 CreateTime 和 LogAppendTime 两种类型,前者表示消息创建的时间,后者表示消息追加到日志文件的时间

上面的操作就是创建生产者实例和构建消息,发送消息主要有三种模式:

  • 发后即忘(fire-and-forget)
  • 同步(sync)
  • 异步(async)

而我们上面使用的发送方式就是发后即忘,它只管往 Kafka 中发送消息而并不关心消息是否正确到达,大多数情况下,这种发送方式是没有什么问题的,不过在有些时候(发生不可重试异常)会造成消息丢失。「尽管这种发送方式性能最高,但是可靠性也最差。」

 

面的代码中可以看到我们往 Properties 文件中 put 进了四个参数,分别为:

  • bootstrap.servers:改参数用来指定生产者客户端连接 Kafka 集群所需的 broker 地址。格式为(host1:port1,host2:port2),可以设置一个或多个地址,中间以逗号隔开,默认值为 “ ”
  • key.serializer 和 value.serializer:分别用来指定 key 和 value 序列化操作的序列化器,这两个参数无默认值,需要填写序列化器的全限定名
  • client.id:用来设定 KafkaProducer 对应的客户端 id,默认值为 “ ”。如果客户端不设置,则KafkaProducer 会自动生成一个非空字符串,内容形式为 “producer-1”,“producer-2”,即字符串 “producer-” 和数字的拼接

其中ProducerRecord定义如下:

 

信很多小伙伴看到这里有点不耐烦了,这 Kafka 怎么这么难,还能不能好好学习了

莫急莫急,理论知识咱们还是要先过一遍,这可不是劝退的开始,这是你成长的开始!下面小菜力求用最简朴的语句带你入最深的坑!

Kafka 之 生产大队

众所周知,Kafka 说高尚点是一个分布式消息队列,简单来说不就是一个消息队列。消息队列简单来说不就是推数据,拿数据的嘛。没错,高端的知识往往需要简单的理解。

那么数据从哪来,数据从生产队来!从编程的角度而言,生产大队里面有一群生产者(当然也可以只有一个),生产者就是负责向 Kafka 发送消息的应用程序。

客户端开发

生产过程大致得具备以下几个步骤方能生产:

  • 配置生产者客户端参数以及创建响应的生产者实例
  • 构建待发送的消息
  • 发送消息
  • 关闭生产者实例

「四大步骤一梭子解决生产问题」


(编辑:衡水站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读