【发布时间】:2021-08-17 16:29:14
【问题描述】:
我在 TypeScript 中使用本地的 KafkaJS 库,使用单个 kafka 代理。我已成功连接生产者,已验证我的主题已创建,并且正在生成消息:
const changeMessage = {
key: id,
value: JSON.stringify(person),
headers: {
changeType: status,
},
};
现在当我去发送消息时:
try {
const sendResponse = await producer.send({
topic: topicName2,
messages: [changeMessage],
});
log.responseFragment(
{ id, topicName2 },
`Sending changed/added person ${id} to topic ${topicName2}`
);
} catch (error) {
log.error(
{ error }, `Could not send personChangedAdded ${id} to topic ${topicName2}`
);
}
这是我返回的错误:
Could not send personChange to topic topicName2
error: {
"name": "KafkaJSError",
"retriable": true
}
【问题讨论】:
-
除了您的自定义消息(与代码不匹配)之外,您是否可以获得错误中的更多详细信息?代理日志是否显示任何有用的信息?
-
错误与那段代码不匹配。即
personChangedAdded显示在带有 id 的错误处理程序中,但错误显示的内容完全不同。 -
@OneCricketeer 从侦听器的代理内部,我在获取分区 topicName2-0 (org.apache.kafka.clients.consumer.internals.Fetcher) 时收到未知主题或分区错误从日志中它是 [2021-08-17 16:02:15,753] TRACE [Controller id=1 epoch=1] Received response StopReplicaResponseData(errorCode=0, partitionErrors=[StopReplicaPartitionError(topicName='IndividualEvents', partitionIndex=0, errorCode=0), StopReplicaPartition
-
带有
topicName='IndividualEvents'的日志与您的代码无关,除非这实际上是您的主题名称。请显示您在哪里设置topicName2的值 -
感谢@OneCricketeer,原来问题出在
log.responseFragment位,当我们将其更正为log.info时,它工作得很好。
标签: javascript typescript apache-kafka kafkajs