static void Main() { var consumerContainer = new UnityContainer(); foreach (ConsumerParam item in ConsumerManager.instance.ConsumerParams) { Type t = Type.GetType(item.classname); consumerContainer.RegisterType(typeof(IConsumer <>), t, item.Name); } var container = new UnityContainer(); //消息总线 IBusControl _busControl = MassTransitRabbitMQ.instance.CreateBus( (cfg, host) => { cfg.ReceiveEndpoint(host, configure => { configure.LoadFrom(consumerContainer); }); }); _busControl.Start(); RabbitMQMessageTransferUtil transferUtil = new RabbitMQMessageTransferUtil(); container.RegisterInstance(transferUtil, new ContainerControlledLifetimeManager()); container.RegisterInstance(_busControl, new ContainerControlledLifetimeManager()); container.RegisterInstance <IBus>(_busControl, new ContainerControlledLifetimeManager()); IocManager.Initialize(new UnityDependencyResolver(container)); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmMqClient()); }
static void Main() { Dictionary <string, UnityContainer> unityContainer = new Dictionary <string, UnityContainer>(); List <ConsumerParam> consumerList = new List <ConsumerParam>(); foreach (ConsumerParam item in ConsumerManager.instance.ConsumerParams) { consumerList.Add(item); } //此处没有对消息队列名称进行去重 var queue_name_list = consumerList.Where(w => !string.IsNullOrEmpty(w.QueueName)).ToList(); foreach (var q in queue_name_list) { var result = consumerList.Where(w => w.QueueName.Equals(q.QueueName)).ToList(); if (result != null) { var uc = new UnityContainer(); foreach (var item in result) { Type t = Type.GetType(item.classname); uc.RegisterType(typeof(IConsumer <>), t, item.Name); } unityContainer.Add(q.QueueName, uc); } } var container = new UnityContainer(); //消息总线 IBusControl _busControl = MassTransitRabbitMQ.instance.CreateBus( (cfg, host) => { //cfg.ReceiveEndpoint(host, "Camera", configure => //{ // // configure.LoadFrom(item.Value); // configure.Consumer<CameraMessageConsumer>(); //}); //cfg.ReceiveEndpoint(host, "TruckScaleData", configure => //{ // // configure.LoadFrom(item.Value); // configure.Consumer<TruckScaleDataProvideMessageConsumer>(); //}); foreach (var item in unityContainer) { cfg.ReceiveEndpoint(host, item.Key, configure => { configure.LoadFrom(item.Value); }); } }); _busControl.Start(); RabbitMQMessageTransferUtil transferUtil = new RabbitMQMessageTransferUtil(); container.RegisterInstance(transferUtil, new ContainerControlledLifetimeManager()); container.RegisterInstance(_busControl, new ContainerControlledLifetimeManager()); container.RegisterInstance <IBus>(_busControl, new ContainerControlledLifetimeManager()); IocManager.Initialize(new UnityDependencyResolver(container)); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmMqServer()); }
static void Main() { var consumerContainer = new UnityContainer(); foreach (ConsumerParam item in ConsumerManager.instance.ConsumerParams) { Type t = Type.GetType(item.classname); consumerContainer.RegisterType(typeof(IConsumer <>), t, item.Name); } var container = new UnityContainer(); //死信对列绑定配置 var bus = MassTransitRabbitMQ.instance.CreateBus( (cfg, host) => { cfg.ReceiveEndpoint(host, "myQueue", x => { x.BindDeadLetterQueue("myQueue-Dead-Letter"); x.Consumer <PrintMessageConsumer>(); }); cfg.ReceiveEndpoint(host, "myQueue10", x => { x.BindDeadLetterQueue("myQueue10-Dead-Letter"); x.Consumer <Print10MessageConsumer>(); }); }); bus.Start(); bus.Stop(); //消息总线 //建议每个死信队列单独配置一个Endpoint IBusControl _busControl = MassTransitRabbitMQ.instance.CreateBus( (cfg, host) => { //配置死信队列 cfg.ReceiveEndpoint(host, "myQueue-Dead-Letter", x => { x.BindMessageExchanges = false; x.Consumer <PrintMessageConsumer>(); }); //配置死信队列 cfg.ReceiveEndpoint(host, "myQueue10-Dead-Letter", x => { x.BindMessageExchanges = false; x.Consumer <Print10MessageConsumer>(); }); }); _busControl.Start(); RabbitMQMessageTransferUtil transferUtil = new RabbitMQMessageTransferUtil(); container.RegisterInstance(transferUtil, new ContainerControlledLifetimeManager()); container.RegisterInstance(_busControl, new ContainerControlledLifetimeManager()); container.RegisterInstance <IBus>(_busControl, new ContainerControlledLifetimeManager()); IocManager.Initialize(new UnityDependencyResolver(container)); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmMqClient()); }