Exemplo n.º 1
0
        /// <summary>
        /// 初始化rabbitmq
        /// </summary>
        /// <param name="container"></param>
        /// <param name="config"></param>
        private static void InitRabbitMq(ContainerBuilder container, RabbitMqConfig config)
        {
            if (!config.IsOpen)
            {
                return;
            }
            var subscriptionAdapt = new SubscriptionAdapt();
            var consumers         = Assembly.Load("TTY.GMP.EventConsumer").GetTypes();

            foreach (var consumer in consumers)
            {
                var attributions = consumer.GetCustomAttributes(typeof(QueueConsumerAttribution), false);
                if (attributions.Length > 0)
                {
                    var consumerQueue      = ((QueueConsumerAttribution)attributions[0]).QueueName;
                    var consumerSuperClass = consumer.GetInterfaces().FirstOrDefault(d => d.IsGenericType && d.GetGenericTypeDefinition() == typeof(IEventConsumer <>));
                    if (consumerSuperClass == null)
                    {
                        continue;
                    }
                    container.RegisterType(consumer).As(consumerSuperClass);
                    var consumerType = consumerSuperClass.GetGenericArguments().Single();
                    var methodInfo   = typeof(SubscriptionAdapt).GetMethod("SubscribeAt").MakeGenericMethod(new Type[] { consumerType });
                    var busControl   = (IBusControl)methodInfo.Invoke(subscriptionAdapt, new object[] { config.Host, consumerQueue, config.UserName, config.Password });
                    var publisher    = new EventPublisher(busControl);
                    container.RegisterInstance(publisher).As <IEventPublisher>();
                }
            }
            Console.WriteLine("RabbitMq订阅成功");
        }
Exemplo n.º 2
0
        /// <summary>
        /// 初始化rabbitmq
        /// </summary>
        /// <param name="container"></param>
        private void InitRabbitMq(ContainerBuilder container)
        {
            var config = Configuration.GetSection("AppSettings").Get <AppSettings>().RabbitMqConfig;

            if (config.IsOpen)
            {
                var busControl = new SubscriptionAdapt().PublishAt(config.Host, "TestConsumerQueue", config.UserName, config.Password);
                var publisher  = new EventPublisher(busControl);
                container.RegisterInstance(publisher).As <IEventPublisher>();
            }
        }