首页 > 解决方案 > 使用 kafkaJS 库的 NodeJS kafka 生产者不起作用

问题描述

我正在使用 kafkaJS 库在 NodeJS 中编写一个 kafka 生产者。

下面是我的示例代码。它与 kafka 代理建立连接并向 kafka 主题“主题名称”发送消息。

KafkaJS-Producer.js

const { Kafka } = require('kafkajs')

const kafka = new Kafka({
  clientId: 'my-app',
  brokers: ['localhost:9092']
})

const producer = kafka.producer() 

async () => {
  await producer.connect()
  await producer.send({
    topic: 'topic-name',
    messages: [
      { key: 'key1', value: 'hello world' },
      { key: 'key2', value: 'hey hey!' }
    ],
  })
  await producer.disconnect()
}

我运行代码没有错误。

node SampleProducer.js

消费来自主题的消息如下:

kafka-console-consumer --bootstrap-server localhost:9092 --topic topic-name --from-beginning

但是,我看不到任何消息被传递到 Kafka 主题。

这可能是什么原因?

笔记:

Kafka 在本地主机上运行。主题也被创建。

资源:

https://www.npmjs.com/package/kafkajs https://kafka.apache.org/

标签: node.jsapache-kafka

解决方案


问题解决了:

实际上,问题在于没有调用产生消息的箭头函数。我对代码进行了一些更改,现在可以正常工作:

var sendMessage = async () => {
  await producer.connect()
  await producer.send({
    topic: 'topic-name',
    messages: [
      { key: 'key1', value: 'hello world' },
      { key: 'key2', value: 'hey hey!' }
    ],
  })
  await producer.disconnect()
}

sendMessage();

推荐阅读