Hello,

I did a test with these two rb scripts which take the time almost the same. do you have the further idea?

$ cat async-pub.rb
require 'kafka'

kafka = Kafka.new("localhost:9092", client_id: "ruby-client", resolve_seed_brokers: true) producer = kafka.async_producer(required_acks: :all,max_buffer_size: 50_000,max_queue_size: 10_000)

10000.times do
    message = rand.to_s
    producer.produce(message, topic: "mytest")
end

producer.deliver_messages
producer.shutdown


$ cat sync-pub.rb
require 'kafka'

kafka = Kafka.new("localhost:9092", client_id: "ruby-client", resolve_seed_brokers: true)

producer = kafka.producer(required_acks: :all,max_buffer_size: 50_000)

10000.times do
    message = rand.to_s
    producer.produce(message, topic: "mytest")
end

producer.deliver_messages

Thanks

On 2022/2/16 10:18, Luke Chen wrote:
Hi frakass,

I think the most difference for sync and async send (or "publish" like you
said), is the throughput.
You said the performance is almost the same, and I would guess the "acks"
config in your environment might be 0? Or maybe the produce rate is slow?
Or "max.in.flight.requests.per.connection" is 1?
Usually, when "acks=all", you have to wait for the records completely
replicated into all brokers before server response in "sync" mode, which is
why the throughput will be slow.
Compared with async mode, the producer send will return immediately after
appending the records, and wait for the response in callback function, no
matter it's acks=0 or acks=all.


Hope that helps.

Luke







On Wed, Feb 16, 2022 at 9:10 AM frakass <capitnfrak...@free.fr> wrote:

for a producer, is there a principle that when to use sync publishing,
and when to use async publishing?

for the simple format messages, i have tested both, their performance
are almost the same.

Thank you.
frakass


Reply via email to