Node.js连接Laradocker中Kafka容器发送消息超时问题求助
Kafka生产者就绪但发送消息超时(Docker环境 + kafka-node库)
我编写了以下Node.js代码用于测试Kafka消息生产:
const kafka = require('kafka-node'); // Create a Kafka client with the Kafka broker's hostname (kafka) and port (9092) const client = new kafka.KafkaClient({ kafkaHost: '0.0.0.0:9092', connectTimeout: 5000 }); // 5000 milliseconds = 5 seconds // Create a Kafka producer using the client const producer = new kafka.Producer(client); // Handle producer ready event producer.on('ready', () => { console.log('Kafka producer is ready'); }); // Handle producer error event producer.on('error', (err) => { console.error('Error with Kafka producer:', err); }); // Example usage: send a message to a Kafka topic const payload = { topic: 'test-topic', messages: 'Hello Kafka!' }; // Send the message producer.send([payload], (err, data) => { if (err) { console.error('Error sending message:', err); } else { console.log('Message sent:', data); } });
执行docker ps查看容器状态,Kafka和ZooKeeper容器均正常运行且端口映射正确:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS Names 4fabb4858464 wurstmeister/kafka "start-kafka.sh" 2 months ago Up 13 hours 0.0.0.0:9092->9092/tcp, :::9092->9092/tcp laradock_kafka_1 a648aff4197b laradock_zookeeper "/docker-entrypoint.…" 2 months ago Up 13 hours 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 8080/tcp laradock_zookeeper_1
但运行代码时,虽然控制台提示Kafka生产者已就绪,却出现发送消息超时错误:
Kafka producer is ready Error sending message: TimeoutError: Request timed out after 30000ms at new TimeoutError (/home/rns/Documents/project-js/new-kafka-task/node_modules/kafka-node/lib/errors/TimeoutError.js:6:9) at Timeout._onTimeout (/home/rns/Documents/project-js/new-kafka-task/node_modules/kafka-node/lib/kafkaClient.js:1012:16) at listOnTimeout (internal/timers.js:554:17) at processTimers (internal/timers.js:497:7)
希望有人能帮我解决这个问题。
内容的提问来源于stack exchange,提问作者wuku
相关产品推荐
相关产品推荐

