

 适用于 .NET 的 AWS SDK V3 已进入维护模式。

我们建议您迁移到 [适用于 .NET 的 AWS SDK V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html)。有关如何迁移的更多详细信息和信息，请参阅我们的[维护模式公告](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/)。

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

# 将 FIFO 与 AWS Message Processing Framework for .NET 结合使用
<a name="msg-proc-fw-fifo"></a>

对于消息排序和消息重复数据删除至关重要的使用案例，AWS Message Processing Framework for .NET 支持先进先出（FIFO）[Amazon SQS 队列](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-fifo-queues.html)和 [Amazon SNS 主题](https://docs.aws.amazon.com/sns/latest/dg/sns-fifo-topics.html)。

## 发布
<a name="mpf-fifo-publish"></a>

向 FIFO 队列或主题发布消息时，您必须设置消息组 ID，该 ID 指定消息所属的组。组内的消息按顺序处理。您可以在特定于 SQS 和 SNS 的消息发布者上进行此设置。

```
await _sqsPublisher.PublishAsync(message, new SQSOptions
{
    MessageDeduplicationId = <message-deduplication-id>,
    MessageGroupId = <message-group-id>
});
```

## 订阅
<a name="mpf-fifo-subscribe"></a>

处理来自 FIFO 队列的消息时，框架会按照每次 `ReceiveMessages` 调用的接收顺序处理给定消息组中的消息。当配置以 `.fifo` 结尾的队列时，框架会自动进入此操作模式。

```
await Host.CreateDefaultBuilder(args)
    .ConfigureServices(services =>
    {
        // Register the AWS Message Processing Framework for .NET.
        services.AddAWSMessageBus(builder =>
        {
            // Because this is a FIFO queue, the framework automatically handles these messages in order.
            builder.AddSQSPoller("https://sqs.us-west-2.amazonaws.com/012345678910/MPF.fifo");
            builder.AddMessageHandler<OrderMessageHandler, OrderMessage>();
        });
    })
    .Build()
    .RunAsync();
```