Support for SQS fair queues
Describe the feature.
Describe the requested feature
AWS has introduced a new feature called SQS fair queues to help "mitigate the noisy-neighbor impact in multi-tenant queues".
For information here: https://aws.amazon.com/about-aws/whats-new/2025/07/amazon-sqs-introduces-fair/ and here: https://aws.amazon.com/blogs/compute/building-resilient-multi-tenant-systems-with-amazon-sqs-fair-queues/.
Using this feature only requires setting the MessageGroupId on the sent message.
This feature also works with SNS: https://aws.amazon.com/about-aws/whats-new/2025/07/amazon-sns-standard-topics-sqs-fair-queues/
Why is this feature useful?
Our system is an “enterprise” SaaS B2B application for workforce management. Our user base scales from small customers with single-digit headcounts, up to 10,000s of staff.
It is not entirely uncommon for a large customer to cause a large amount of messages to be published or sent to individual endpoints - either planned or unplanned.
Normally we scale well enough to absorb the extra message traffic without significant delays in message traffic for other customers.
This feature would help ensure minimal message processing delays other customers without having to intervene and scale up additional resources.
Thank you for the feature suggestion. Could you please expand on the description providing "why" this is a feature that you require? Do you have a scenario where you have noisy neighbours with NServiceBus - could you describe the scenario and how it's affecting you?
Collecting thoughts for a possible future implementation. Ideally, users should be able to configure the message group ID (effectively a tenant identifier) globally at the transport configuration level by extracting it from the incoming message. Something like:
transport.MessageGroupID( (nativeMessage, transportMessage) =>
{
// extract the group identifier from the incoming message
return groupID;
} );
Similarly, they should be able to override that while sending/publishing messages using Send/PublishOptions in a message handler. One thing to look into is how unrestricted delayed delivery works and make sure that if an incoming message is delayed and it already contains a group ID, it's not replaced by the delayed delivery one.