public MessageProcessingAsync(IReceiveMessagesFactory receiveMessages,
IMessageContextFactory messageContextFactory,
IQueueWaitFactory queueWaitFactory,
ILogFactory log,
ProcessMessageAsync 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;
_messageContextFactory = messageContextFactory;
_log = log.Create();
_processMessage = processMessage;
_receivePoisonMessage = receivePoisonMessage;
_rollbackMessage = rollbackMessage;
_noMessageToProcessBackoffHelper = new Lazy<IQueueWait>(queueWaitFactory.CreateQueueDelay);
_seriousExceptionProcessBackOffHelper = new Lazy<IQueueWait>(queueWaitFactory.CreateFatalErrorDelay);
}