此脚本是从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));
}
}
}
当我在“调试”模式下跟踪代码时,订阅事件的顺序为:
consumer.Subscribe(topics)
consumer.Poll(TimeSpan.FromMilliseconds(1000));
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
包括连接到代理并使用新事件。
consumer.Subscribe
或
consumer.Poll
还是?consumer.Poll
在控制台窗口上打印信息?而且似乎出现了一些错误(飞行中超时)。答案 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发行版相比,它具有更多功能,得到了显着改进并且性能更高