У нас есть потребитель Kafka, который будет читать сообщения и делать подобные вещи, а затем снова публиковать их в теме Kafka, используя приведенный ниже скриптконфигурация типа queue.buffering.max.messages
queue.buffering.max.ms
batch.num.messages
Я предполагаю, что все они будут значениями по умолчанию из конфигурации
queue.buffering.max.messages : 100000
queue.buffering.max.ms : 0
batch.num.messages : 10000
мое понимание: когдавнутренняя очередь достигает либо сообщений queue.buffering.max.ms, либо batch.num.messages, которые будут опубликованы в Kafka в отдельном потоке.в моей конфигурации queue.buffering.max.ms равно 0, поэтому каждое сообщение будет опубликовано, как только я вызову yield ().поправьте меня, если я ошибаюсь.
Мой фрагмент кода производителя:
def send(topic, message):
p.produce(topic, json.dumps(message), callback=delivery_callback(err, msg))
p.flush()
из этого сообщения Я понимаю, что при использовании flush после каждого сообщения, продюсер будет синхронизироватьсярежиссер .если я использую приведенный выше сценарий, то для публикации в Kafka
потребуется ~ 45 мс. Если я изменю приведенный выше фрагмент на
def send(topic, message):
p.produce(topic, json.dumps(message), callback=delivery_callback(err, msg))
p.poll(0)
Будет ли улучшена какая-либо производительность?Можете ли вы уточнить мое понимание.
Спасибо