/// <summary> /// 投递消息,带重试功能 /// </summary> /// <param name="message"></param> static void TryDeliverMessage(MessageEntity message) { var deliverMessage = new DeliverMessageModel(message); TryDeliverMessage(deliverMessage); if (!deliverMessage.IsFinish) { _retryDeliverMessages.Add(deliverMessage); if (!_IsRetryTimerRunning) { _deliverMessageTimer.Change(RetryDueTime, Timeout.Infinite); _IsRetryTimerRunning = true; } } }
/// <summary> /// 投递消息,带重试功能 /// </summary> /// <param name="deliverMessage"></param> static void TryDeliverMessage(DeliverMessageModel deliverMessage) { if (deliverMessage == null || deliverMessage.Message == null) { return; } if (deliverMessage.DeliverCount == 0) { Logger.InfoFormat("开始推送消息, Message:[{0}]", deliverMessage.Message.ToString()); } else { Logger.InfoFormat("开始尝试第 {0} 次推送消息, Message:[{1}]", deliverMessage.DeliverCount, deliverMessage.Message.ToString()); } var result = DeliverMessage(deliverMessage.Message); if (result) { deliverMessage.IsFinish = true; } else if (deliverMessage.Message.NoRetry) { deliverMessage.IsFinish = true; } else { if (deliverMessage.DeliverCount >= MaxRetryCount) { deliverMessage.IsFinish = true; Logger.Info("取消推送消息,重试次数超过最大重试上限"); } else { deliverMessage.DeliverCount++; } } }