我已经建立了一个这样的系统: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)
暂无答案!
目前还没有任何答案,快来回答吧!