2

我正在尝试在 AWS 中创建一个 Lambda,作为 MSK 主题的生产者。所有 AWS 文档都说要创建一个新的 EC2 实例,但由于我的 Lambda 在同一个 VPC 中,我觉得这应该可以工作。我对此很陌生,我注意到我的日志语句从未在我的 producer.on 函数中命中。我正在使用 nodejs 和 kafka-node 模块。代码可以在下面找到。

本质上,我只是想知道是否有人知道如何做到这一点,以及为什么当我通过 Lambda 运行测试时,producer.on 函数永远不会被命中?这只是一些测试代码,看看我是否可以发送它,但如果需要更多数据以提供帮助,请提前告诉我并感谢。

exports.handler = async (event, context,callback) => {

const kafka = require('kafka-node');
const bp = require('body-parser');

const kafka_topic = 'MyTopic';
const Producer = kafka.Producer;
var KeyedMessage = kafka.KeyedMessage;
const Client = kafka.Client;
const client = new kafka.KafkaClient({kafkaHost: 'myhost:9094'});

console.log('client :: '+JSON.stringify(client));

const producer = new Producer(client);
console.log('about to hit producer code');

producer.on('ready', function() {
  console.log('Hello there!')
  let message = 'my message';
  let keyedMessage = new KeyedMessage('keyed', 'me keyed message');
  
    producer.send([
    { topic: kafka_topic, partition: 0, messages: [message, keyedMessage], attributes: 0 }
  ], function (err, result) {
    console.log(err || result);
    process.exit();
  });
});

producer.on('error', function (err) {
  console.log('error', err);
});
}
return "success";
4

1 回答 1

0

您需要的是能够使用 REST API 在您的 MSK 集群上生成消息。为什么不按照此处的详细信息为 MSK 设置 REST 代理,然后调用此 API 将您的消息生成给 MSK。

于 2020-11-27T12:24:28.013 回答