node.js - 我的 SQS 队列没有显示任何来自 aws-sdk 和 Node.js 的消息

标签 node.js amazon-sqs aws-sdk-js

我的代码是

const AWS = require('aws-sdk')
AWS.config.update({ accessKeyId: process.env.AWS_ACCESS_KEY_ID, secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY })
const sqs = new AWS.SQS({ region: 'us-east-1' })

  return Promise.map(utxos, (utxo) => {
    console.log({
      QueueUrl: process.env.SQS_URL,
      MessageBody: {
        txid: utxo.txid,
        CurrencyId: CurrencyId,
        address: utxo.address
      }
    })

    return sqs.sendMessage({
      QueueUrl: process.env.SQS_URL,
      MessageBody: JSON.stringify({
        txid: utxo.txid,
        CurrencyId: CurrencyId,
        address: utxo.address
      })
    }, (err, response) => {
      console.log('err', err)
      console.log('response', response)
    })
  })

但是,当我查看 AWS 控制台时,我没有看到任何消息。我使用的是标准队列,而不是 FIFO 队列。

可能出了什么问题?

2 console.log 永远不会打印。但第一个使用了所有正确的参数。

最佳答案

我认为问题在于您没有在 Promise.map 内返回 promise

像这样包装你的 sqs 代码应该可以工作

return new Promise((resolve, reject)=>{
  sqs.sendMessage({
    QueueUrl: process.env.SQS_URL,
    MessageBody: JSON.stringify({
      txid: utxo.txid,
      CurrencyId: CurrencyId,
      address: utxo.address
    })
  }, (err, response) => {
    console.log('err', err)
    console.log('response', response)
    if(err)(reject(err))
    resolve(response);
  })
});

关于node.js - 我的 SQS 队列没有显示任何来自 aws-sdk 和 Node.js 的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50141490/

相关文章:

amazon-web-services - 当消息存在于 SQS 队列中时触发 AWS 中的 Lambda 函数

azure-devops - 使 aws-sdk node_module 可用于我的 Azure DevOps 扩展

node.js - 如何在 AWS js SDK 中配置区域?

node.js - 使用 Node.js,如何在子进程上执行多个命令并在每个命令后获取响应?

javascript - 在没有 Node 的系统上运行 nodejs 应用程序

javascript - 上传后从AWS S3获取上传的文件

java - 获取消息的当前可见性超时

javascript - 如何将mysql值存储到变量中?

amazon-web-services - AWS SQS 长轮询不会减少空接收