python kafka寫入.net平臺消費 延遲5秒問題解決

測試環境,使用python的pykafka寫入消息數據,.net Confluent.Kafka進行消費,中間發現,間隔一秒發送會延遲5秒做批處理。

python代碼:

from pykafka import KafkaClient
import datetime
import threading
import time


def producer():
    client = KafkaClient(hosts="172.26.1.22:9092", broker_version='2.4')
    topicdocu = client.topics["251z_37"]
    producer = **topicdocu.get_producer()**

    for num in range(1, 20):
        time.sleep(1)
        producer.produce(bytes(str(num), encoding='utf-8'), timestamp=datetime.datetime.now())
        print(num)


if __name__ == '__main__':
    producer()

.net 消費代碼:

                        var consumerConfig = new ConsumerConfig
            {
                BootstrapServers = "172.26.1.22:9092",
                AutoOffsetReset = AutoOffsetReset.Earliest,
                GroupId = "node",
                EnableAutoCommit = true,
            };
            var kafkaBuilder = new ConsumerBuilder<string, string>(consumerConfig);

            using (var consumer = kafkaBuilder.Build())
            {
                CancellationTokenSource cts = new CancellationTokenSource();
                consumer.Subscribe("251z_37");
                while (true)
                {
                    var kafkaResult = consumer.Consume(cts.Token);
                    //var @event = JsonConvert.DeserializeObject<NodeStateMachine.Entity.NodeCustomerEntity>(kafkaResult.Value);
                    Console.WriteLine(kafkaResult.Value + "   " + DateTime.Now.ToString("HH:mm:ss"));
                }
            }

問題效果:
可以看到,消費的信息是5秒的間隔打印出來,並不是理想中的一秒一條數據
可以看到,這種情況會5秒寫入一次數據,消費端會五秒接收到一批數據。
問題原因:producer = topicdocu.get_producer(sync=True) 初始化時候,需要設置sync=True,需要傳參爲同步處理。之後就是一切正常了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章