Dead-letter queue (DLQ) is a special / system queue in Service Bus. It was not intended to be used for a scenario where user code sends messages. Its purpose is to store messages that have failed processing or certain conditions have taken place. These scenarios would cause messages to dead-letter:
Eixceeded number of processing attempts (MaxDeliveryCount)
An explicit indication that the message is poisonous and cannot be processed (explicit dead-lettering by user code).
Messages expire (TimeToLive) and the queue was instructed to dead-letter expired messages.
Subscription filter evaluation resulted in no subscribers (only intended for testing purposes)
Only in those scenarios, messages will be moved by the broker to the DLQ.
NServiceBus only moves messages to the DLQ when the incoming message cannot be processed for the reason of being a poisonous message (failing to deserialize it or malformed message that cannot be ingested). For anything else, the Error queue is the destination if the processing is not successful.
Could you elaborate on why in this specific case rather than sending messages to the error queue they’d be sent to a DLQ?