lambda在每个sqs消息上触发,尽管lambda事件源Map中的批处理大小为500

thtygnil  于 2021-06-29  发布在  Java
关注(0)|答案(0)|浏览(300)

我已经建立了一个这样的系统:lambda1->sqs->lambda2
lambda1将向sqs发送大量消息(都在几秒钟内)。然后,我在sqs队列和lambda2之间设置和事件源Map,以便 MaximumBatchingWindowInSeconds 180秒 BatchSize 500英镑。考虑到这个设置,我只希望lambda2被触发一次(对于在180秒内从lambda1发送的多达500条消息)。但是观察到的行为(基于lambda2的cloudwatch日志数量)似乎是每条消息一个触发器(传递给处理程序的sqsevent只包含一条记录)。这个 MaximumBatchingWindowInSeconds 不过,180秒似乎是有效的。另一个细节是lambda2的超时也是180秒。你知道这里会发生什么吗?

MyQueue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: MyQueueName
      ReceiveMessageWaitTimeSeconds: 10
      VisibilityTimeout: 180
LambdaFunctionEventSourceMapping:
    Type: AWS::Lambda::EventSourceMapping
    Properties:
      BatchSize: 500
      Enabled: true
      EventSourceArn: !GetAtt MyQueue.Arn
      FunctionName: !GetAtt MyLambdaFunction.Arn
      MaximumBatchingWindowInSeconds: 180

编辑:
lambda1使用sdk向sqs发送消息: sqsClient.sendMessage(sendSQSMessageRequest); lambda2通过handlerequest函数接收sqsevents: public Boolean handleRequest(final SQSEvent sqsEvent, final Context context)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题