You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your improvement related to a problem? Please describe.
The Amazon SQS transport has native headers support. However, SQS has limitations on how many native headers can be set. To overcome those limitations, NServiceBus endpoints use two different techniques (irrelevant for this issue).
Recently, the SQS transport was improved, allowing it to process any native message type regardless of whether the sender is an NServiceBus endpoint or not.
What could happen is that a native message reaches the endpoint input queue. The message has a body and a few message attributes (the SQS headers). The transport picks up the message; if processing fails, the message is forwarded to the error queue.
When the transport runs in ServiceControl and picks up the failed native message mentioned above, it'll forward it to the ingestion pipeline as is without the message attributes because those are stored in the extension bag (and not promoted to transport message headers).
That means that when ServiceControl retries the failed message, the message attributes are gone, and the retried message has less data than the originally failed one.
Describe the suggested improvement
Is your improvement related to a problem? Please describe.
The Amazon SQS transport has native headers support. However, SQS has limitations on how many native headers can be set. To overcome those limitations, NServiceBus endpoints use two different techniques (irrelevant for this issue).
Recently, the SQS transport was improved, allowing it to process any native message type regardless of whether the sender is an NServiceBus endpoint or not.
What could happen is that a native message reaches the endpoint input queue. The message has a body and a few message attributes (the SQS headers). The transport picks up the message; if processing fails, the message is forwarded to the error queue.
When the transport runs in ServiceControl and picks up the failed native message mentioned above, it'll forward it to the ingestion pipeline as is without the message attributes because those are stored in the extension bag (and not promoted to transport message headers).
That means that when ServiceControl retries the failed message, the message attributes are gone, and the retried message has less data than the originally failed one.
Related SQS issue: Particular/NServiceBus.AmazonSQS#2356
Describe the suggested solution
Describe alternatives you've considered
A hack specific to SQS could be Particular/NServiceBus.AmazonSQS#2356 (comment)
The text was updated successfully, but these errors were encountered: