本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在自定义事件总线上对事件进行排序和重复事件删除
订购是订阅者的财产。重复数据删除是在您发布时进行的。两者在不同的地方配置并解决了不同的问题。
排序
订阅者Type是UNORDERED或FIFO。无序订阅者并行传送事件,以实现最高吞吐量。FIFO 订阅者按照事件组中发布事件的顺序发送事件。你可以在发布时分配群组,任一发布 API 的每个条目SystemMetadata.EventGroupId中都有。
事件组属于发布该群组的账号。两个以相同方式发布到共享总线的帐户会EventGroupId创建两个独立的组:它们的事件不是相对于彼此排序的,并且它们不共享一个组的吞吐量。有关群组限制,请参阅自定义事件总线配额。
在 FIFO 订阅者中,无法传送的事件会暂停自己群组中的后期事件,而其他群组则继续进行。保持组标识符的界限,例如客户标识符或订单标识符,并且不要从无限制的输入中派生出它们。诸如 Amazon SQS FIFO 队列之类的 FIFO 目标会对组标识符强制执行自己的长度和字符限制。
FIFO 订阅者接受 InvocationType EVENT Lambda 目标,但随后订单只能保留到 Lambda 的异步队列中的移交为止。REQUEST_RESPONSE用于有序处理。
在发布时删除重复数据
您可以通过对请求进行设置或在每个条目DeduplicationType=CONTENT_BASED上进行设置SystemMetadata.DeduplicationId来删除重复数据。
-
--deduplication-configuration DeduplicationType=CONTENT_BASED根据要求设置。 EventBridge 对每个条目的内容进行哈希处理,并隐藏已接受其哈希值的条目。 -
省略
DeduplicationConfiguration并在每个条目SystemMetadata.DeduplicationId上设置一个你已经拥有的密钥,例如来自你的制作者的等效密钥。
EventBridge 抑制在重复输入后 5 分钟(300 秒)内到达的副本。支票的范围仅限于您的账户,当条目带有EventGroupId:来自另一个账户或另一个群组的具有相同密钥的条目是不同的事件。不带的条目EventGroupId仍会在该总线上所有账户未分组的条目中进行重复数据删除。
总而言之,这可以提供一次精确的摄取:窗口内的重复发布在总线处被抑制,然后 FIFO 订阅者在其组中按顺序将每个已接受的事件交给其目标一次。
无论哪种方式,抑制的重复项都会返回SuccessCode: DEDUPLICATED。把它当作成功来对待。将每一次成功都算作新事件的代码夸大了交付。 EventBridge 将基于内容的重复数据删除列为一项单独的操作,因此最好DeduplicationId在您的制作人已经拥有密钥时使用。有关定价,请参阅 Amazon EventBridge 定价