protected override async Task Given(AllDependencyResolversTestContext context) { await base.Given(context); var clock = new SystemClock(); var typeProvider = new TestHarnessTypeProvider(new[] {GetType().Assembly}, new[] {GetType().Namespace}); var serializer = new DataContractSerializer(typeProvider); var replyQueueNameSetting = new ReplyQueueNameSetting( new ApplicationNameSetting {Value = "TestApplication"}, new InstanceNameSetting {Value = "TestInstance"}); var handlerMap = new HandlerMapper(typeProvider).GetFullHandlerMap(typeof (IHandleCommand<>)); _brokeredMessageFactory = new BrokeredMessageFactory(new MaxLargeMessageSizeSetting(), new MaxSmallMessageSizeSetting(), replyQueueNameSetting, clock, new NullCompressor(), new DispatchContextManager(), new UnsupportedLargeMessageBodyStore(), serializer, typeProvider); _commandDispatcher = new CommandMessageDispatcher(_brokeredMessageFactory, new SystemClock(), Subject, new NullInboundInterceptorFactory(), new NullLogger(), handlerMap); }
public IEnumerable<IMessagePump> CreateAll() { _logger.Debug("Creating command message pumps"); var commandTypes = _commandHandlerTypes.Value.SelectMany(ht => ht.GetGenericInterfacesClosing(typeof (IHandleCommand<>))) .Select(gi => gi.GetGenericArguments().First()) .OrderBy(t => t.FullName) .Distinct() .ToArray(); foreach (var commandType in commandTypes) { _logger.Debug("Creating message pump for command type {0}", commandType.Name); var queuePath = PathFactory.QueuePathFor(commandType); var messageReceiver = _messagingFactory.GetQueueReceiver(queuePath); var dispatcher = new CommandMessageDispatcher(_commandHandlerFactory, commandType, _clock); _garbageMan.Add(dispatcher); var pump = new MessagePump(messageReceiver, dispatcher, _logger, _clock); _garbageMan.Add(pump); yield return pump; } }