/// <summary> /// Использовать очередь с ошибочными сообщениями. /// </summary> /// <param name="channel">Канал.</param> /// <param name="settings">Настройки подписчика.</param> /// <param name="messageType">Тип сообщения.</param> public void UseDeadLetteredQueue(IModel channel, SubscriberSettings settings, Type messageType) { var queueName = _namingConvention.QueueNamingConvention(messageType, settings); var deadLetterQueueName = _namingConvention.DeadLetterQueueNamingConvention(messageType, settings); var deadLetterExchangeName = _namingConvention.DeadLetterExchangeNamingConvention(messageType, settings); channel.ExchangeDeclare( exchange: deadLetterExchangeName, durable: settings.Durable, autoDelete: settings.AutoDelete, type: ExchangeType.Direct ); channel.QueueDeclare( queue: deadLetterQueueName, durable: settings.Durable, exclusive: settings.Exclusive, autoDelete: settings.AutoDelete, arguments: new Dictionary <string, object> { [QueueArgument.QUEUE_MODE] = QueueMode.Lazy } ); channel.QueueBind( queue: deadLetterQueueName, exchange: deadLetterExchangeName, routingKey: queueName ); }