/// <summary> /// 发布 /// </summary> /// <param name="patternType">模式类型</param> /// <param name="routingKey">路由key</param> /// <param name="messageBody">消息内容</param> /// <param name="publishTime">发布时间(到了发布时间队列才会执行)</param> /// <param name="exchangeName">交换机名称</param> /// <param name="durabled">是否持久化(默认:需要持久化)</param> /// <param name="headers">头部信息</param> /// <returns></returns> public static ResponseResult Publish(PublishPatternType patternType, string routingKey = "", object messageBody = null, DateTime?publishTime = null, string exchangeName = "", bool durabled = true, Dictionary <string, object> headers = null) { var instance = GetInstance(patternType, patternType); return(instance.Publish(exchangeName, routingKey, messageBody, publishTime, durabled, headers)); }
/// <summary> /// 根据点赞类型获取对象实例 /// </summary> /// <param name="patternType">模式类型</param> /// <param name="constructorArgs">可变的构造函数列表</param> /// <returns></returns> private static BaseProducer GetInstance(PublishPatternType patternType, params object[] constructorArgs) { if (!InstanceCacheDic.ContainsKey(patternType)) { lock (locker) { if (!InstanceCacheDic.ContainsKey(patternType)) { string assemblyName = "Stack.RabbitMQ.Producers"; string className = $"{assemblyName}.{patternType.ToString()}Producer"; BaseProducer instance = (BaseProducer)Activator.CreateInstance(Type.GetType(className), constructorArgs); InstanceCacheDic.Add(patternType, instance); } } } return(InstanceCacheDic[patternType]); }
/// <summary> /// 构造函数 /// </summary> /// <param name="channel"></param> public RoutingProducer(PublishPatternType patternType) : base(patternType) { }
/// <summary> /// 构造函数 /// </summary> /// <param name="patternType"></param> public RPCProducer(PublishPatternType patternType) : base(patternType) { }
/// <summary> /// 构造函数 /// </summary> /// <param name="queueName"></param> /// <param name="imodel"></param> /// <param name="channel"></param> public TopicProducer(PublishPatternType patternType) : base(patternType) { }
/// <summary> /// 构造函数 /// </summary> /// <param name="channel"></param> /// <param name="patternType"></param> public BaseProducer(PublishPatternType patternType) { PatternType = patternType; }