/// <summary> /// Initializes a new instance of the <see cref="MessageProcessing"/> class. /// </summary> /// <param name="receiveMessages">The receive messages.</param> /// <param name="messageContextFactory">The message context factory.</param> /// <param name="queueWaitFactory">The queue wait factory.</param> /// <param name="log">The log.</param> /// <param name="processMessage">The process message.</param> /// <param name="receivePoisonMessage">The receive poison message.</param> /// <param name="rollbackMessage">rolls back a message when an exception occurs</param> public MessageProcessing( IReceiveMessagesFactory receiveMessages, IMessageContextFactory messageContextFactory, IQueueWaitFactory queueWaitFactory, ILogFactory log, ProcessMessage processMessage, IReceivePoisonMessage receivePoisonMessage, IRollbackMessage rollbackMessage) { Guard.NotNull(() => receiveMessages, receiveMessages); Guard.NotNull(() => messageContextFactory, messageContextFactory); Guard.NotNull(() => queueWaitFactory, queueWaitFactory); Guard.NotNull(() => log, log); Guard.NotNull(() => processMessage, processMessage); Guard.NotNull(() => receivePoisonMessage, receivePoisonMessage); Guard.NotNull(() => rollbackMessage, rollbackMessage); _receiveMessages = receiveMessages.Create(); _messageContextFactory = messageContextFactory; _log = log.Create(); _processMessage = processMessage; _receivePoisonMessage = receivePoisonMessage; _rollbackMessage = rollbackMessage; _noMessageToProcessBackoffHelper = new Lazy<IQueueWait>(queueWaitFactory.CreateQueueDelay); _seriousExceptionProcessBackOffHelper = new Lazy<IQueueWait>(queueWaitFactory.CreateFatalErrorDelay); }