我正在使用 Kafkajs 库编写一个 Kafka 生产者,并尝试将下面的代码与 Kafka 远程服务器连接起来。
下面是我的节点 js 代码。
const express = require('express')
const app = express()
var path = require('path');
app.use(express.urlencoded({ extended: false }));
app.use(express.json())
const { Kafka } = require('kafkajs')
const kafka = new Kafka({
clientId: 'From-Node-Application',
// brokers: ['localhost:9092']
brokers: ['http://192.168.31.11:9092']
})
const producer = kafka.producer()
app.post('/masterdata', async (req,res) => {
var todayTime = new Date();
const {comp_name,med_name,med_price,stock_number} = req.body;
console.log(
`employee_id:${comp_name},employee_name:${med_name},employee_salary:${med_price}`);
try {
await producer.connect()
await producer.send({
topic: 'employee-details',
messages: [
{ value:
`employee_id:${comp_name},employee_name:${med_name},employee_salary:${med_price}` },
],
})
} catch (error) {
console.log(error, "Data is Not valid, Request you to Check Schema Definition!");
}
res.sendFile(path.join(__dirname + '/master.html'));
})
app.listen(3000,()=>{
console.log("Application listen on PORT 3000")
})
但我收到以下错误。
{"level":"ERROR","timestamp":"2021-05-12T13:33:23.179Z","logger":"kafkajs","message":"[BrokerPool] 连接种子代理失败,正在尝试列表中的另一个代理:连接失败:端口应 >= 0 且 < 65536。收到 NaN。","retryCount":4,"retryTime":3592} {"level":"ERROR","timestamp": "2021-05-12T13:33:26.789Z","logger":"kafkajs","message":"[BrokerPool] 连接种子代理失败,尝试列表中的另一个代理:连接失败:端口应该是>= 0 且 < 65536。收到 NaN。","retryCount":5,"retryTime":7822}
我也更改了 server.properties 代码,请在下面找到代码详细信息以供参考。
listeners=PLAINTEXT://0.0.0.0:9092 advertised.listeners=PLAINTEXT://192.168.31.11:9092 listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL num.network.threads=3
当我在同一台服务器上的节点和 Kafka 等一台服务器上运行所有代码时,我没有收到任何错误,即使我尝试使用这样的 ngrok -> ngrok HTTP 9092但我得到了与上面分享的相同的错误。
我怀疑有没有办法从互联网上的任何地方连接我们的 Kafka 代理。
请求您帮助我解决此问题。
提前致谢。