In one of our application, we have the following setting:

# kafka configuration
# ~~~~~
kafka {
  # comma seperated list of brokers
  # for e.g., "localhost:9092,localhost:9032"
  brokers = "localhost:9092,localhost:9032"
  topic = "asset-computed-telemetry"
  isEnabled = true
  # for a detailed list of configuration options see
  # under New Producer Configs
  # http://kafka.apache.org/082/documentation.html#producerconfigs
  requestRequiredAcks = 1
  requestTimeout = 3.seconds
  bufferMemoryBytes = "33554432"
  blockOnBufferFull = false
  # setting this to 0 indicates that the producer will never
  # block and will just drop messages once the queue buffer to
  # kafka broker is full
  queueEnqueTimeoutMs = 0.seconds
  producerType = "async"
  messageSendMaxRetries = 1
}

As you can see from the configuration is that, we have a buffer of 33 MB.
Now I have one topic on my broker and this topic has 20 partitions. So what
I do in my producer application is that I create 10 instances of my
Producer and I write to the topic.

So each producer instance gets a copy of this configuration. Does this mean
that I will reserve 33 times 10 instances = 330 MB os space just for the
buffer? What if I have more and more topics in the future? Will I use all
the memory only for the buffer?

Reply via email to