

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

# 对自定义事件总线上的事件进行排序和重复数据消除
<a name="eb-custom-bus-ordering"></a>

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

## 排序
<a name="eb-custom-bus-ordering-fifo"></a>

订阅者`Type`是`UNORDERED`或`FIFO`。无序订阅者并行传送事件以实现最高吞吐量。FIFO 订阅者按照事件组*中发布事件的顺序交付*事件。您在发布时分配群组，在任一发布 API 的每个条目`SystemMetadata.EventGroupId`中都包含该群组。

事件组属于发布该事件的账户。发布到共享总线的两个账户会`EventGroupId`创建两个独立的群组：它们的事件不是相对于彼此排序的，也不共享群组的吞吐量。有关群组限制，请参阅[自定义事件总线配额](eb-quota.md#eb-custom-bus-quotas)。

在 FIFO 订阅者中，无法传送的事件会将后续事件保留在自己的群组中，而其他群组则继续。保持群组标识符的界限，例如客户标识符或订单标识符，不要从无界输入中导出它们。诸如亚马逊 SQS FIFO 队列之类的 FIFO 目标会对组标识符强制执行自己的长度和字符限制。

## 发布时删除重复数据
<a name="eb-custom-bus-ordering-dedup"></a>

您可以通过在请求上进行设置或通过在每个条目`DeduplicationType=CONTENT_BASED`上进行设置`SystemMetadata.DeduplicationId`来消除重复数据。
+ `--deduplication-configuration DeduplicationType=CONTENT_BASED`根据请求设置。 EventBridge 对每个条目的内容进行哈希处理，并隐藏已接受其哈希值的条目。
+ 省略每个条目`DeduplicationConfiguration``SystemMetadata.DeduplicationId`并将其设置为已有的密钥，例如生产者提供的等效密钥。

EventBridge 抑制在重复输入后的 5 分钟（300 秒）内到达的副本。检查范围仅限于您的账户，如果条目带有`EventGroupId`：来自另一个账户或另一个组中的相同密钥的条目是不同的事件，则仅限于事件组。`EventGroupId`对于您账户在该总线上所有未分组的条目，不带的条目仍会被去重。

这共同实现了精确的交付一次：窗口内的重复发布在总线上被抑制，然后 FIFO 订阅者在其组内按顺序传送每个已接受的事件一次。在窗口外，或者来自其他账户或群组，重复发布是一个新事件。让消费者在这些情况下保持警惕。

无论哪种方式，抑制的重复项都会返回`SuccessCode: DEDUPLICATED`。把它当作成功来对待。将每一次成功视为新事件的代码夸大了交付。 EventBridge 将基于内容的重复数据删除视为一项单独的操作，因此最好在生产者已经拥有密`DeduplicationId`钥的情况下进行重复数据删除。有关定价，请参阅[亚马逊 EventBridge 定价](https://aws.amazon.com/eventbridge/pricing/)。有关重复数据删除适用的内容类型，请参阅[支持的内容类型：JSON、Avro、Protobuf 和原始字节](eb-custom-bus-open-formats.md)。