Version 4 (V4) of the SDK for .NET is in preview! To see information about this new version in preview, see the AWS SDK for .NET (version 4 preview) Developer Guide.
Please note that V4 of the SDK is in preview, therefore its content is subject to change.
Using FIFO with the AWS Message Processing Framework for .NET
Note
This is prerelease documentation for a feature in preview release. It is subject to change.
For use cases where message ordering and message deduplication are critical, the AWS Message Processing Framework for .NET supports first-in-first-out (FIFO) Amazon SQS queues and Amazon SNS topics.
Publishing
When publishing messages to a FIFO queue or topic, you must set the message group ID, which specifies the group that the message belongs to. Messages within a group are processed in order. You can set this on the SQS-specific and SNS-specific message publishers.
await _sqsPublisher.PublishAsync(message, new SQSOptions
{
MessageDeduplicationId = <message-deduplication-id>,
MessageGroupId = <message-group-id>
});
Subscribing
When handling messages from a FIFO queue, the framework handles messages within a given message
group in the order in which they were received for each ReceiveMessages
call. The framework
enters this mode of operation automatically when configured with a queue ending in
.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();