public static void ListenMq() { //var mappers = AppDomain.CurrentDomain.GetAssemblies() // .SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(PFConsumerTask)))); Type[] taskTypes = new Type[] { typeof(PFConsumerTask), typeof(PFConsumerResponseTask) }; var mappers = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Any(b => taskTypes.Contains(b)))); //if (!mappers.Any()) { throw new Exception("必需实现接口IPFConfigMapper"); } foreach (var i in mappers) { var taskObj = Activator.CreateInstance(i); if (taskObj is PFConsumerResponseTask) { PFConsumerResponseTask tmpObj = taskObj as PFConsumerResponseTask; PFMqHelper.BuildConsumer(tmpObj); } else if (taskObj is PFConsumerTask) { PFConsumerTask tmpObj = taskObj as PFConsumerTask; PFMqHelper.BuildConsumer(tmpObj); } //PFConsumerTask tmpObj = Activator.CreateInstance(i) as PFConsumerTask; //PFMqHelper.BuildConsumer(tmpObj); } //var mapper = Activator.CreateInstance(mappers.First()); }
public static void BuildConsumer(PFConsumerResponseTask task) { PFMqConfig mqConfig = task.GetMqConfig(_mqConfig.TClone()); PFMqType mqType = mqConfig.getMqType(); switch (mqType) { //case PFMqType.RabbitMq: // (new PFMq(mqConfig)).BuildRabbitMqConsumer(task); // break; //case PFMqType.RocketMq: // (new PFMq(mqConfig)).BuildRocketMqConsumer(task); // break; //case PFMqType.AliMq: // (new PFMq(mqConfig)).BuildAliMqConsumer(task); // break; case PFMqType.PFEmailMq: (new PFMq(mqConfig)).BuildPFEmailMqConsumer(task); break; default: break; } }