Моя очередь SQS не показывает никаких сообщений в полете от aws-sdk с node.js - PullRequest
0 голосов
/ 02 мая 2018

Мой код

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 никогда не печатается. Но первый делает со всеми правильными параметрами.

1 Ответ

0 голосов
/ 02 мая 2018

Я считаю, что проблема в том, что вы не возвращаетесь в обещании внутри 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);
  })
});
...