private void HandleMessage(IMessageQueue messageQueue, Message message) { var rejectPolicy = _queueConfig.QueueRejectPolicy; // Если не отказываемся обрабатывать сообщение if (rejectPolicy == null || rejectPolicy.MustReject() == false) { var acknowledgePolicy = _queueConfig.QueueAcknowledgePolicy; if (acknowledgePolicy != null) { var acknowledge = false; // Подтверждение окончания обработки сообщения, если разрешено if (acknowledgePolicy.OnBefore()) { messageQueue.Acknowledge(message); acknowledge = true; } var consumer = _consumerFactory(); try { consumer.Handle(message); // Подтверждение окончания обработки сообщения, если разрешено if (!acknowledge && acknowledgePolicy.OnSuccess()) { messageQueue.Acknowledge(message); } } catch (Exception exception) { OnConsumerError(exception); // Подтверждение окончания обработки сообщения, если разрешено if (!acknowledge && acknowledgePolicy.OnFailure(exception)) { messageQueue.Acknowledge(message); } } } else { var consumer = _consumerFactory(); try { consumer.Handle(message); } catch (Exception exception) { OnConsumerError(exception); } } } else { messageQueue.Reject(message); } }