How to trigger AWS SQS to Lambda after get 5 messages

This is my first question.

I'm trying to connect nestjs to Aws sqs and get a batch of message. But, every try i get only one message.

Here i'm ussing SQS-Consumer

  const consumerApp = Consumer.create({
    queueUrl: 'here_goes_my_url',
    region: 'us-east-1',
    batchSize: 4,
    handleMessageBatch: async(message) => {
      console.log('Ha llegado un mensaje de SQS', new Date())
      console.log(message)
    },
    sqs: new AWS.SQS({
      httpOptions: {
        agent: new Agent({
          keepAlive: true
        })
      }
    }),
    waitTimeSeconds: 5
  })

Here i'm using aws-sdk

  const sqs = new AWS.SQS({region: 'us-east-1'})
  sqs.receiveMessage({
    QueueUrl: 'url',
    WaitTimeSeconds: 10,
    MaxNumberOfMessages: 5,
  }, (err, data) => {
    if(err) {
      console.log(err)
      return;
    }
    console.log('Hemos recibido esto', data)
  })

And here i'm using nestjs-sqs

    SqsModule.register({
      consumers:[{
        name: 'lamda-test',
        queueUrl: '',
        batchSize: 10,
      }]
    })

Upvotes: 0

Views: 701

Answers (1)

Marcin
Marcin

Reputation: 238051

batchSize is maximum number of messages that you can get. There is no guarantee that you always get 5 messages if a batch size is 5. It only means that you will get no more then 5 at one time.

If you require precisely 5 message for each invocation, you need a fully custom solution for that.

Upvotes: 1

Related Questions