public NsqBus( Dictionary <string, List <MessageHandlerMetadata> > topicChannelHandlers, IObjectBuilder dependencyInjectionContainer, IMessageTypeToTopicProvider messageTypeToTopicProvider, IMessageSerializer sendMessageSerializer, ILogger nsqLogger, IMessageMutator messageMutator, IMessageTopicRouter messageTopicRouter, INsqdPublisher nsqdPublisher ) { if (topicChannelHandlers == null) { throw new ArgumentNullException("topicChannelHandlers"); } if (dependencyInjectionContainer == null) { throw new ArgumentNullException("dependencyInjectionContainer"); } if (messageTypeToTopicProvider == null) { throw new ArgumentNullException("messageTypeToTopicProvider"); } if (sendMessageSerializer == null) { throw new ArgumentNullException("sendMessageSerializer"); } if (nsqdPublisher == null) { throw new ArgumentNullException("nsqdPublisher"); } if (nsqLogger == null) { throw new ArgumentNullException("nsqLogger"); } _topicChannelHandlers = topicChannelHandlers; _dependencyInjectionContainer = dependencyInjectionContainer; _messageTypeToTopicProvider = messageTypeToTopicProvider; _sendMessageSerializer = sendMessageSerializer; _nsqLogger = nsqLogger; _messageMutator = messageMutator; _messageTopicRouter = messageTopicRouter; _nsqdPublisher = nsqdPublisher; _dependencyInjectionContainer.Inject((IBus)this); }