Example #1
0
        /// <summary>
        /// 将获取到的消息重新发送到队列中, 根据配置, 可以转发到其他MQ队列, 也可以执行重试计数
        /// </summary>
        protected void ReSendMQ()
        {
            if (CurrentMessage == null)
            {
                return;
            }

            if (string.IsNullOrEmpty(MyConfig.RetryAddress) == false)
            {
                //失败转发
                try
                {
                    MessageQueueTools.SendMessage(MyConfig.RetryAddress, CurrentMessage);
                }
                catch (Exception ex)
                {
                    ThisLogger.Error(ex, MyConfig.RetryAddress, CurrentMessage.Body);
                }
            }
            else if (MyConfig.RetryCount > 0)
            {
                //失败重试
                int TryTimes = 0;

                try
                {
                    if (string.IsNullOrEmpty(CurrentMessage.Label) || int.TryParse(CurrentMessage.Label, out TryTimes) == false)
                    {
                        TryTimes = 0;
                    }

                    if (TryTimes < MyConfig.RetryCount)
                    {
                        TryTimes = TryTimes + 1;

                        CurrentMessage.Label = Convert.ToString(TryTimes);

                        MessageQueueTools.SendMessage(MyConfig.Address, CurrentMessage);
                    }
                    else
                    {
                        ThisLogger.Warn(new LogInfo("{0}超过重试计数({1})", CurrentMessage.Body, TryTimes));
                    }
                }
                catch (Exception ex)
                {
                    ThisLogger.Error(ex, MyConfig.Address, CurrentMessage.Label);
                }
            }
        }
Example #2
0
        /// <summary>
        /// 记录访问日志
        /// </summary>
        /// <param name="log"></param>
        public void Send(T log)
        {
            try
            {
                MessageQueueConfig mq = GetConfig(log);

                MessageQueueTools.SendMessage(
                    mq.Address,
                    log, string.Empty, new BinaryMessageFormatter());
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }
        }
Example #3
0
        /// <summary>
        /// 记录访问日志
        /// </summary>
        /// <param name="log"></param>
        public void Log(AccessInfo log)
        {
            try
            {
                MessageQueueConfig config = GetConfig(log);

                MessageQueueTools.SendMessage(
                    config.Address,
                    log, string.Empty, new BinaryMessageFormatter());
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }
        }