根据官网的意思是当一批消息体大小达到这个batch.size的时候会发送。那么问题来了,如果一个topic的消息量本来就少,比如一天只发一两条,根本达不到这个batch.size大小,那么这个topic的消息是一直等吗?还是马上发送。这个发送机制是什么样的,能否详细说明?
还有一个时间维度,即使batch.size没有到,那么在一定的时间段内,依然会发送消息。也是毫秒级的。
这个时间可以配置吗?还是代码中根据某种算法确定的,或者是写死的一个固定值?
我特别想知道,当我调用了send发送了一万条消息以后,我不调用flush方法的话,这一万条消息会什么时候刷新到kafka的分区中去,我测试的时候是延迟大概五六秒会到队列,但是如果我send很大的量消息,比如100万,当线程执行完毕以后,main方法结束,只有几十万消息刷到了kafka分区,剩下的几十万丢失了。所以如果我知道他刷消息的时机就可以避免这个问题了
稍后我找找这个参数,信息太多,我忘记在哪里看的了。
想问下, producer 和 broker之间是短连接还是长连接.
想问下, producer 和 broker之间是短连接还是长连接.
长连接
Linger.ms or batch.size 满足其一 就发送
想问下, producer 和 broker之间是短连接还是长连接.
你的答案