代码之家  ›  专栏  ›  技术社区  ›  Shamoon

我的SQS队列不显示来自aws sdk with node的任何消息。js公司

  •  2
  • Shamoon  · 技术社区  · 6 年前

    我的代码是

    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控制台。日志从不打印。但第一种方法使用所有正确的参数。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Andrew Font    6 年前

    我认为问题是你没有在 Promise.map

    像这样包装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);
      })
    });