private static IMessageBus BuildMessageBus(AbstractConfiguration cfg) { ISubscriptionService subscriptionService = MessageBusConfigurationExtensions.GetSubscriptionService(cfg); IMessageSink messageSink = MessageBusConfigurationExtensions.GetMessageSink(cfg); IObjectContainer container = ObjectContainerConfigurationExtensions.GetObjectContainer(cfg); IRouteManager routeManager = container.Resolve <IRouteManager>(); Xyperico.Agres.MessageBus.Implementation.MessageBus bus = new Agres.MessageBus.Implementation.MessageBus(subscriptionService, routeManager, messageSink); container.RegisterInstance <IMessageBus>(bus); return(bus); }
private static void AutoSubscribeToHandledMessages(BaseConfiguration cfg) { ISubscriptionService subscriptionService = MessageBusConfigurationExtensions.GetSubscriptionService(cfg); IMessageSink messageSink = MessageBusConfigurationExtensions.GetMessageSink(cfg); MessageDispatcher dispatcher = MessageBusConfigurationExtensions.GetDispatcher(cfg); foreach (Type msg in dispatcher.GetHandledMessages()) { if (typeof(IEvent).IsAssignableFrom(msg)) { subscriptionService.Subscribe(msg, messageSink); } } }
/// <summary> /// Start configuration of messages bus and scan for message handlers in the supplied assemblies. /// </summary> /// <param name="cfg"></param> /// <param name="assemblies"></param> /// <param name="messageHandlerConvention"></param> /// <returns></returns> public static MessageBusConfiguration MessageBus(this BaseConfiguration cfg, IEnumerable <Assembly> assemblies, IMessageHandlerConvention messageHandlerConvention = null) { if (cfg.ContainsKey(MessageBus_SettingsKey)) { throw new InvalidOperationException("You should not configure MessageBus twice."); } cfg.Set(MessageBus_SettingsKey, true); Condition.Requires(assemblies, "assemblies").IsNotNull(); // Also scan core message handlers assemblies = assemblies.Union(new Assembly[] { Assembly.GetExecutingAssembly() }); MessageDispatcher dispatcher = MessageBusConfigurationExtensions.GetDispatcher(cfg); dispatcher.RegisterMessageHandlers(assemblies, messageHandlerConvention ?? new DefaultMessageHandlerConvention()); return(new MessageBusConfiguration(cfg)); }
private static MessageBusHost BuildMessageBusHost(AbstractConfiguration cfg) { MessageBusHost busHost = new MessageBusHost(MessageBusConfigurationExtensions.GetMessageSource(cfg), MessageBusConfigurationExtensions.GetDispatcher(cfg)); return(busHost); }