当Kafka Consumer订阅该活动时,它将显示飞行中超时1

时间:2018-12-12 07:44:53

标签: c# apache-kafka subscribe consumer confluent-kafka

此脚本是从Kafka订阅事件的方法。

using Confluent.Kafka;
using Confluent.Kafka.Serialization;
static void Main(string[] args)
{
    string brokerList = "broker";
    var topics = new List<string>() { "topicName" };
    var config = new Dictionary<string, object>
    {
        { "group.id", "ConsumerGroup" },
        { "bootstrap.servers", brokerList },
        { "auto.offset.reset", "earliest" },
        { "enable.auto.commit", false }
    };

    using (var consumer = new Consumer<string, string>(config, new StringDeserializer(Encoding.UTF8), new StringDeserializer(Encoding.UTF8)))
    {
        consumer.OnMessage += (obj, msg) =>
        {
            ...
        };

        consumer.Subscribe(topics);

        while (true)
        {
            consumer.Poll(TimeSpan.FromMilliseconds(1000));
        }
    }
}

当我在“调试”模式下跟踪代码时,订阅事件的顺序为:

  1. consumer.Subscribe(topics)
  2. consumer.Poll(TimeSpan.FromMilliseconds(1000));
  3. consumer.OnMessage += (obj, msg) =>

在获取新事件之前(进入consumer.OnMessage),它花了一些时间进行轮询(在consumer.Poll中)并在控制台窗口上打印一些信息。

如下:

4|2018-12-12 10:41:53.381|rdkafka#consumer-1|REQTMOUT| [thrd:broker/bootstrap]: broker/bootstrap: Timed out 1 in-flight, 0 retry-queued, 0 out-queue, 0 partially-sent requests

按照我的初衷,它使用consumer.Subscribe(topics)连接代理,并使用consumer.Poll使用新事件。

但是似乎consumer.Poll包括连接到代理并使用新事件。

我的问题是:

  1. 哪个功能可以连接到经纪人? consumer.Subscribeconsumer.Poll还是?
  2. 为什么consumer.Poll在控制台窗口上打印信息?而且似乎出现了一些错误(飞行中超时)。

1 个答案:

答案 0 :(得分:0)

关于第一个问题。

  

哪个功能可以连接到经纪人? Consumer.Subscribe或Consumer.Poll或?

python3 python3-pip ipython3 build-essential python-dev python-dev3 连接到代理,consumer.Subscribe使用消息。

还有第二个。

  

为什么Consumer.Poll在控制台窗口上打印信息?而且似乎有一些错误(飞行中超时1)。

Confluent.Kafka在here中发布了新的主要版本。如果以前的版本有任何问题,可以使用推荐的版本。基于GitHub存储库:

  

与0.11.x发行版相比,它具有更多功能,得到了显着改进并且性能更高