private MessageDispatcher CreateAndStartDispatcher(IDispatcherTaskSchedulerFactory taskSchedulerFactory) { var messageDispatcher = new MessageDispatcher(_pipeManagerMock.Object, new IMessageHandlerInvokerLoader[] { new SyncMessageHandlerInvokerLoader(_containerMock.Object), new AsyncMessageHandlerInvokerLoader(_containerMock.Object), }, taskSchedulerFactory); messageDispatcher.ConfigureAssemblyFilter(x => x == GetType().Assembly); messageDispatcher.ConfigureHandlerFilter(type => type != typeof(SyncMessageHandlerInvokerLoaderTests.WrongAsyncHandler)); messageDispatcher.Start(); return messageDispatcher; }
public IBus CreateBus() { if (_configuration == null) throw new InvalidOperationException("The CreateBus() method was called with no configuration (Call .WithConfiguration(...) first)"); Container.Configure(x => x.AddRegistry<ZebusRegistry>()); Container.Configure(x => { x.ForSingletonOf<IBusConfiguration>().Use(_configuration); x.ForSingletonOf<IZmqTransportConfiguration>().Use(_transportConfiguration); x.ForSingletonOf<IMessageDispatcher>().Use("MessageDispatcher factory", ctx => { var dispatcher = new MessageDispatcher(ctx.GetInstance<IPipeManager>(), ctx.GetAllInstances<IMessageHandlerInvokerLoader>().ToArray(), ctx.GetInstance<IDispatcherTaskSchedulerFactory>()); dispatcher.ConfigureHandlerFilter(assembly => _scanTargets.Any(scanTarget => scanTarget.Matches(assembly))); dispatcher.ConfigureAssemblyFilter(type => _scanTargets.Any(scanTarget => scanTarget.Matches(type))); return dispatcher; }); }); foreach (var configurationAction in _configurationActions) { Container.Configure(configurationAction); } var bus = Container.GetInstance<IBus>(); bus.Configure(PeerId, _environment); return bus; }