Search code examples
c#azureazureservicebusazure-storage-queues

Azure Storage Queue vs Azure Service Bus for poison messages & DLQs


What is the difference between Azure Queue Storage and Azure Service with regards to dead letter queues & poison messages?

How do I read the messages from those queues?


Solution

  • A poison message is a message that is sent to the queue or topic that the consuming application cannot process correctly.

    Once the DeliveryCount of these messages reaches the MaxDeliveryCount of the queue/topic, they will then be classed as poison messages.

    These messages will be sent to a queue called <originalqueuename>-poison.

    Both support poison messages but Azure Queue Storage does not support automatic dead-lettering.

    This means that while in Azure Service Bus you can set expired messages to be moved into a DLQ for later processing, messages with a TTL value that expire in Azure Storage Queue will be deleted permanently.

    Otherwise, handling of messages that will "poison" the system & can never be consumed, is pretty much the same in both offerings.

    Both offer a poison queue however only one offers a DLQ.