/// <summary> /// 启用第三方事件总线 /// </summary> /// <param name="connectionName">连接字符串名称</param> public static void UseEventBus(this IEventBusConfiguration eventBusConfiguration, string connectionName = "Microsoft.ServiceBus.ConnectionString", int timeOut = 10, string queueName = "SinoQueue") { if (string.IsNullOrEmpty(connectionName)) { throw new ArgumentNullException(nameof(connectionName)); } BusHub = Bus.Factory.CreateUsingAzureServiceBus(cfg => { var host = cfg.Host(CloudConfigurationManager.GetSetting(connectionName), h => { h.OperationTimeout = TimeSpan.FromSeconds(timeOut); h.TransportType = Microsoft.ServiceBus.Messaging.TransportType.NetMessaging; }); cfg.ReceiveEndpoint(host, "SinoQueue", e => { e.UseMessageScope(); e.LoadFrom(Ioc.IocContainer); }); }); //释放ABP自带的EventBus var releaseEventBus = Ioc.Resolve <IEventBus>(); Ioc.Release(releaseEventBus); Ioc.IocContainer.Register(Component.For <IBus>().Instance(BusHub).Named("BusRegister")); Ioc.IocContainer.Register(Component.For <IBusControl>().Instance(BusHub).Named("BusControlRegister")); var eventBusExtensions = Ioc.Resolve <IEventBusExtensions>(); Ioc.IocContainer.Register( Component.For <IEventBus>(). Instance(eventBusExtensions). IsDefault(). Named("Sino.EventBus") ); BusHub.Start(); }