node.js - 您可以使用 Node.js 8.10 支持的 AWS Lambda 函数向 SNS 主题发布多条消息吗?

标签 node.js aws-lambda amazon-sns

有一个关于如何发布单条消息的相关问题: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 的多个调用的功能。

  1. 创建一个返回 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/

    相关文章:

    javascript - Redis - 如何列出数据库中的所有键?

    android - 无法启动 './qemu/windows-x86_64/qemu-system-i386.exe' : No such file or directory

    amazon-web-services - 具有 SNS 权限的 Lambda 死信队列

    amazon-web-services - 云形成 : Publish to SNS topic

    node.js - 使用 javascript SDK 在 lambda 上启用 SNS 事件源

    javascript - 使用 mqtt.js 和 Mosca 的离线消息问题

    node.js - 使用 map 在 Sequelize 中创建一个新的普通对象

    amazon-web-services - 如果 StringSet 不存在,则附加到或创建它

    amazon-web-services - 使用 CloudFormation 更新 AWS Lambda 函数

    html - 为什么要使用 AWS Lambda/API Gateway 来提供 HTML 内容而不是用于无服务器架构的 S3 存储桶