微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

您如何使用AWS中的nodejs Lambda作为生产者来将消息发送到MSK主题而不创建EC2客户端服务器?

如何解决您如何使用AWS中的nodejs Lambda作为生产者来将消息发送到MSK主题而不创建EC2客户端服务器?

我正在尝试在AWS中创建一个Lambda,以充当MSK主题的生产者。所有的AWS文档都说要创建一个新的EC2实例,但是由于我的Lambda位于同一VPC中,所以我认为这应该可行。我对此很陌生,我注意到我的log语句从未在我的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";

解决方法

您需要的是能够使用REST API在MSK群集上生成消息。为什么不将MSK的REST代理设置为detailed here,然后调用此API来向MSK生成消息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。