[英]Why are my AWS SQS messages being deleted even though they don't match the filter criteria?
我使用带有 SQS 触发器的 AWS Lambda 函数来处理队列中的消息。
我在触发器上设置了一个过滤器模式,只允许处理正文中具有特定值的消息。 但是,我注意到一些不符合过滤条件的消息未经处理就从队列中删除。
这是我的触发器配置:
import type { AWS } from '@serverless/typescript'
import { handlerPath } from '@libs/handler-resolver'
import { QueueArn } from '@libs/sqs'
export default {
handler: `${handlerPath(__dirname)}/handler.main`,
events: [
{
sqs: {
arn: QueueArn,
enabled: true,
batchSize: 10,
maximumBatchingWindow: 1,
functionResponseType: 'ReportBatchItemFailures',
filterPatterns: [
{
body: {
type: ['EMAIL'],
action: [{ exists: true }],
payload: [{ exists: true }]
}
}
]
}
}
]
} as AWS['functions'][keyof AWS['functions']]
我想将不符合过滤条件的消息保留在队列中,以便稍后处理或由不同的函数处理。
有没有办法将触发器配置为不删除这些消息?
我已尝试以下方法来解决此问题:
但是,问题仍然存在,我不确定是什么原因造成的。 任何帮助或建议将不胜感激。
感谢@luk2302,感谢您建议使用 SNS 扇出到其他 SQS 队列。 我最终采用了这种方法,并且对我来说效果很好。
我没有在单个 SQS 队列上使用过滤器模式,而是为我的每个 AWS Lambda 创建了一个单独的 SQS 队列,并设置了从 SNS 主题到每个队列的订阅。 这样,我可以根据消息内容将消息路由到适当的 Lambda,而不是依赖过滤器模式来为我做这件事。
感谢您的帮助,我很高兴能够解决我的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.