Im使用连接到多个代理的cppkafka生成消息并将消息发送到kafka队列。虽然消息发送给消费者,但消费者始终收到null。我将produce message方法完全用作cppkafka示例,但是使用者总是收到空消息。请参阅下面的代码片段。
我试着玩了一下上面的配置设置。我还尝试使用精确的类型作为函数负载。即使这些示例传递了std::string,我也尝试使用确切的签名类型,但没有成功,即: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}”
实际结果:null
请注意,此问题现已解决。我们有3个经纪人,有12个分区。因此生成器客户端只生成到分区0的消息。但是在那个时间点,分区0不在lead-broker上,所以没有将消息复制到其他分区。我们部署的解决方案是在不指定分区的情况下生成,牵头代理将接收消息并自行决定使用哪个分区-谢谢。