从cppkafka转换为kafka主题时获取消费者空值吗?

时间:2019-09-10 17:06:26

标签: c++ kafka-producer-api

我使用连接到多个代理的cppkafka来生成消息并将消息发送到kafka队列。尽管味精会发送给使用者, 但是消费者在任何时候都收到null。我使用的生产消息方法与cppkafka示例完全相同,但是使用者始终收到一个空msg。请参见下面的代码段。

我已经尝试过使用配置设置,如上所示。 我也尝试过使用函数有效负载的确切类型。即使示例传递了std :: string,Ive也尝试使用确切的签名类型无济于事,即:CppKafka :: Buffer cppkafka :: Buffer msg(json_msg.c_str(),json_msg.length());

Configuration config = {
{"metadata.broker.list", "brokers:<portno>"},
{"debug", "all"},
{"client.id", "myapp"},
{"message.timeout.ms", 300000},
{"session.timeout.ms", 600000},
{"enable.auto.commit", false}
};

//Create the producer
Producer producer(config);
int partition = 0;
const string json_msg = "{"name":"john smith", "age":"25", "city":"NYC"}";
// Produce a message!

producer.produce(MessageBuilder(“ mytopic”)。partition(0).payload(json_msg));     producer.flush();

预期结果: “ {” name“:” john smith“,” age“:” 25“,” city“:” NYC“}”

实际结果: 空

1 个答案:

答案 0 :(得分:0)

请注意,此问题现已解决。 我们有3个经纪人,包括12个分区。因此生产者客户正在生产 仅发送到分区0的消息。但是在那个时候,分区0不在领先经纪人上,因此消息没有被复制到其他分区。我们部署的解决方案是在不指定分区的情况下进行生产,而主要经纪人将收到消息,并自行决定要使用哪个分区-谢谢。