private bool CheckRetryLimit(long retryLimit, RabbitWorkMessage msg) { IBasicProperties properties = msg.BasicProperties; if (retryLimit <= 0) { return(true); } // check dead-letter counter (number of times the message was dlx) long count = msg.GetRetryCount(); // check dlx count against our threshold if (count >= retryLimit) { // move message to dead-letter queue if (String.IsNullOrEmpty(deadLetterQueue)) { // create dead letter queue lock (QueueName) { deadLetterQueue = QueueName + ".dead-letter"; deadLetterQueue = EnsureQueueExists(deadLetterQueue, Mode); } } // publish message to the deadletter queue PublishChannel.BasicPublish("", deadLetterQueue, (IBasicProperties)properties.Clone(), msg.Body); // delete message Ack(msg); return(false); } return(true); }