View a markdown version of this page

在自定义事件总线上对事件进行排序和重复事件删除 - Amazon EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在自定义事件总线上对事件进行排序和重复事件删除

订购是订阅者的财产。重复数据删除是在您发布时进行的。两者在不同的地方配置并解决了不同的问题。

排序

订阅者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 定价。有关重复数据删除适用的内容类型,请参阅支持的内容类型:JSON、Avro、Protobuf 和原始字节。