美文网首页JAVA开发实习生日志
kafka工作原理(新人向,代码向)

kafka工作原理(新人向,代码向)

作者: 小丑皇_0624 | 来源:发表于2021-07-28 13:59 被阅读0次

kafka工作原理(新人向,代码向)

以上来自:链接

怎么向kafka send消息呢?

如何向kafka send消息

可以看出,由producer对象中的send方法中用ProducerRecord封装了个由topic,key,value组成的消息。

producer:

原来就有的Producer接口 其中producer对象是由原来就有的Producer接口生成的。

send:

Producer接口中send方法介绍

消息的组成:topic,key和value

topic:

send时的目标主题。

key:

用atomicLong实现若空时自增的键。

value:

将value对象转化为Json字符串send到kafka

如何转化?

JSON.toJSONString则是将对象转化为Json字符串。

如何向kafka poll消息呢?

如何向kafka poll消息呢

consumer:与producer同理,只不过是消费消息罢了。

Duration.of:

大体意思是一段时间,比如这里10000millis,意思是10秒

duration.of含义


ConsumerRecords records =consumer.poll(Duration.of(10000, ChronoUnit.MILLIS));

在10秒内poll拿到的放进ConsumerRecord接口生成的records中,再把所有拿到的value放入result这个Arraylist中。(这部分与send部分类似,不详细写了)

commitAsync():

commitAsync详解

鄙人的拙劣翻译如下:

    背景介绍:

要以文件存放消费的消息时,为了方便查找,对于过大的文件分成许多个小文件,并由offset来给这些小文件打标签(和数组的offset一个意思)。这个过程叫平均/重组(rebalance)。


我的翻译:

在最后一次从指定的主题分区中poll时,会拿到各个offset。

这个拿offset的行为只在kafka用。在最开始拿消息或重组之后,这个行为才会用这个api。所以,你想用这个api给不是kafka上的消息拿offset是不可能的。

这是个异步的过程,任何时候都不会被打断。遇到任何报错都会扔给callback(如果提供的话)或者被丢弃。

在多个调用这个api时,会根据调用先后来给offset。相应的callback也会以相同顺序给出。拿offset这个操作一定会在commitSync()返回前做完。

参数:callback——为了说明这个commitAsync操作完成了。

也就是说,这句话是设定怎么设置offset用的。

相关文章

网友评论

    本文标题:kafka工作原理(新人向,代码向)

    本文链接:https://www.haomeiwen.com/subject/gddzmltx.html