/// <summary> /// 检查消费者实例 /// </summary> /// <param name="consumer"></param> protected void CheckConsumer(IMqConsumer consumer) { if (consumer == null) { throw new ArgumentException("参数不能为空", nameof(consumer)); } }
/// <summary> /// 为所有的消息类型注册消费者 /// </summary> /// <param name="consumer"></param> public void Register(IMqConsumer consumer) { CheckConsumer(consumer); lock (consumerAll) { consumerAll.Add(consumer); } Console.WriteLine($"所有类型 {consumer} 注册成功"); }
/// <summary> /// 为指定消息类型注册消费者 /// </summary> /// <param name="type"></param> /// <param name="consumer"></param> protected void RegisterType(Type type, IMqConsumer consumer) { CheckConsumer(consumer); if (type == typeof(object)) { throw new ArgumentException("object类型请改用Register非泛型方法"); } lock (consumerDic) { if (!consumerDic.TryGetValue(type, out var consumers)) { consumers = new List <IMqConsumer>(); consumerDic.Add(type, consumers); } consumers.Add(consumer); } Console.WriteLine($"{type} {consumer} 注册成功"); }
/// <summary> /// 为指定消息类型注册消费者 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="consumer"></param> public void Register <T>(IMqConsumer <T> consumer) { var type = typeof(T); RegisterType(type, consumer); }