/// <summary> /// 交换机发送消息 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="exchangeName"></param> /// <param name="msg"></param> /// <param name="routingKey"></param> /// <param name="exchangeType"></param> /// <param name="isTask"></param> /// <param name="durable"></param> public void SendMessageByExchange <T>(string exchangeName, T msg, string routingKey = "", string exchangeType = "direct", bool isTask = true, bool?durable = null) where T : class { var message = SerializeObject(msg); PollyHelper.GetRetryTimesPolicy(2, ex => { if (isTask) { var task = new Task(() => { SendMsgByExchange(exchangeName, message, exchangeType, routingKey, durable); }); TasksCache.Enqueue(task); } else { throw ex; } }).Execute(() => { SendMsgByExchange(exchangeName, message, exchangeType, routingKey, durable); }); }
private static readonly ConcurrentQueue <Task> TasksCache = new ConcurrentQueue <Task>(); //缓存队列 #region 公有函数 /// <summary> /// 发送消息 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="qName"></param> /// <param name="msg"></param> /// <param name="isTask"></param> /// <param name="durable"></param> public void SendMessage <T>(string qName, T msg, bool isTask = true, bool?durable = null) where T : class { var message = SerializeObject(msg); PollyHelper.GetRetryTimesPolicy(2, ex => { if (isTask) { var task = new Task(() => { SendMsg(qName, message, durable); }); TasksCache.Enqueue(task); } else { throw ex; } }).Execute(() => { SendMsg(qName, message, durable); }); }