如何在触发 lambda 后将消息保留在 SQS 上
How keep messages on SQS after triggering lambda
在我的应用程序中,我们使用 SQS 对要由另一个模块处理的消息进行排队。 SQS 不会发送消息已到达的通知,我不想让我的应用程序每隔“X 次”去检查一次。因此,我正在尝试使用 lambda 触发器向我的模块发出 http 请求,并在消息到达时使其汇集来自 SQS 的消息。
问题是如果 lambda 函数没有错误(据我所知),SQS 会删除已发送的消息。强制错误只是为了将消息保留在池中是不正确的。所以我需要一种在触发 lambda 后将消息保留在 SQS 上的方法。
也许我应该将处理消息的代码移至 lambda 函数,但我正在寻找将其保留在那里的方法。
谁能给点指导?
提前致谢
SQS 被构建为一个单一的生产者到消费者的队列,因此预期的功能正在发生。
但是,有一个解决方案适用于这种情况,但需要您更新架构。
解决方案是使用 fanout architecture.
您可以改为发布到 SNS 主题,您的 SQS 队列订阅了该主题。然后为并行通道创建额外的 SQS 队列(每个唯一的 Lambda 1 个)。
将每个 Lambda 函数添加为自己的 SQS 队列的使用者,每个函数都有自己的处理。
在我的应用程序中,我们使用 SQS 对要由另一个模块处理的消息进行排队。 SQS 不会发送消息已到达的通知,我不想让我的应用程序每隔“X 次”去检查一次。因此,我正在尝试使用 lambda 触发器向我的模块发出 http 请求,并在消息到达时使其汇集来自 SQS 的消息。
问题是如果 lambda 函数没有错误(据我所知),SQS 会删除已发送的消息。强制错误只是为了将消息保留在池中是不正确的。所以我需要一种在触发 lambda 后将消息保留在 SQS 上的方法。
也许我应该将处理消息的代码移至 lambda 函数,但我正在寻找将其保留在那里的方法。
谁能给点指导?
提前致谢
SQS 被构建为一个单一的生产者到消费者的队列,因此预期的功能正在发生。
但是,有一个解决方案适用于这种情况,但需要您更新架构。
解决方案是使用 fanout architecture.
您可以改为发布到 SNS 主题,您的 SQS 队列订阅了该主题。然后为并行通道创建额外的 SQS 队列(每个唯一的 Lambda 1 个)。
将每个 Lambda 函数添加为自己的 SQS 队列的使用者,每个函数都有自己的处理。