c++ - 从 cppkafka 推送到 kafka 主题时获取消费者的空值?

标签 c++ kafka-producer-api

我正在使用连接到多个代理的 cppkafka 来生成消息并将消息发送到 kafka 队列。虽然消息被发送给消费者, 但消费者始终收到空值。我完全按照 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)); 生产者.flush();

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

实际结果: 空

最佳答案

请注意,此问题现已解决。 我们有 3 个代理,有 12 个分区。所以生产者客户正在生产 仅发送到分区 0 的消息。但在那个时间点,分区 0 不在主代理上,因此消息不会被复制到其他分区。我们部署的解决方案是在不指定分区的情况下生成,而主要代理将接收消息并自行决定使用哪个分区 - 谢谢。

关于c++ - 从 cppkafka 推送到 kafka 主题时获取消费者的空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57875428/

相关文章:

python - 在 postgresql 的引号或其他需要引号的代码行中列出?

c++ - 在无效循环 cout 操作期间,元素自动插入到 std::map

c++ - 模板匹配亚像素精度

c++ - 获取 std::any 的大小

c++ - 为什么 VkKeyScanW 对 unicode 字符返回 -1?

apache-kafka - 获取主题元数据时 Kafka 消费者 "failed to find leader"

c++ - 删除 std::unique_ptr<Base> 容器中的派生类

apache-kafka - 如何为kafka主题选择分区数?

apache-kafka - Kafka DefaultPartitioner 算法

apache-kafka - Kafka 生产者 request.timeout.ms 和 timeout.ms 属性的区别