【发布时间】:2022-04-09 05:39:43
【问题描述】:
我需要一些事件只发送一次,但我无法控制消息处理器(因此我无法使接收者具有幂等性)。
是否可以将事件从 Eventbridge 路由到 FIFO SQS 以进行重复数据删除,并从 FIFO sqs 路由到接收方(其他帐户为 lambda?这会实现精确一次传递吗?
【问题讨论】:
标签: amazon-web-services amazon-sqs aws-event-bridge aws-sqs-fifo
我需要一些事件只发送一次,但我无法控制消息处理器(因此我无法使接收者具有幂等性)。
是否可以将事件从 Eventbridge 路由到 FIFO SQS 以进行重复数据删除,并从 FIFO sqs 路由到接收方(其他帐户为 lambda?这会实现精确一次传递吗?
【问题讨论】:
标签: amazon-web-services amazon-sqs aws-event-bridge aws-sqs-fifo
EventBridge (EB) 有at-least-once 传递,这意味着您可以获得多个相同类型的事件。但是,如果这不是问题,并且您唯一关心的是 SQS,那么是的,EB supports SQS FIFO 目标:
EventBridge 可让您设置各种目标,例如 Amazon SQS 标准和 FIFO 队列,它们以 JSON 格式接收事件。
【讨论】:
这是可能的,但您必须配置 FIFO 队列。它可以根据消息的正文检测重复项。看到这个docs。
FIFO 队列可帮助您避免将重复发送到队列。如果你重试 5 分钟重复数据删除间隔内的 SendMessage 操作, Amazon SQS 不会将任何重复项引入队列。
该链接继续说明需要哪些配置,因此请务必查看。
【讨论】:
当您将 SQS FIFO 设置为 EventBridge 规则的目标时,您能否根据负载内容动态设置 messageGroupId?
从当前的设置中我看到它只能是一个硬编码的值。
【讨论】: