예제 #1
0
        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());
        }
예제 #2
0
        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());
        }
예제 #3
0
        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());
        }