有一个关于如何发布单条消息的相关问题:Can you publish a message to an SNS topic using an AWS Lambda function backed by node.js?
但是,我的问题与发布多条消息有关。 我正在使用 Node 8.10,并且我的处理程序是异步的。
最佳答案
您可以使用Promise.all()封装对 sns.publish 的多个调用的功能。
- 创建一个返回 Promise 的单通知发布函数:
.
function onePublishPromise(notificationParams){
return new Promise((resolve, reject) => {
sns.publish(notificationParams, function(err, data) {
if (err) {
console.error("Unable to send notification message. Error JSON:", JSON.stringify(err, null, 2));
reject(err);
} else {
console.log("Results from sending notification message: ", JSON.stringify(data, null, 2));
resolve(null);
}
});
});
}
- 并行创建和发送通知:
//创建通知参数
常量通知 = [
{
Subject: 'A new notification',
Message: 'Some message',
TopicArn: 'arn:aws:sns:us-west-1:000000000:SomeTopic'
}
// , ...
];
// Send all notifications
const notificationsDelivery = notifications.map(onePublishPromise);
// Wait for delivery results
Promise.all(notificationsDelivery).then(callback).catch(callback);
回调
将在所有消息发布(成功或失败)后调用
关于node.js - 您可以使用 Node.js 8.10 支持的 AWS Lambda 函数向 SNS 主题发布多条消息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50644389/