예제 #1
0
        private void PrepareTimeout(Exchange exchange, Message msg)
        {
            msg.MaxRetransmit = 0;

            TransmissionContext ctx = exchange.GetOrAdd <TransmissionContext>(_TransmissionContextKey, _ => new TransmissionContext(_config, exchange, msg, null, 0));

            if (ctx.CurrentTimeout == 0)
            {
                ctx.CurrentTimeout = _nonTimeout;
            }

            _Log.Debug(m => m("Send request, timeout only"));

            ctx.Start();
        }
예제 #2
0
        private void PrepareRetransmission(Exchange exchange, Message msg, Action <TransmissionContext> retransmit)
        {
            TransmissionContext ctx = exchange.GetOrAdd <TransmissionContext>(
                _TransmissionContextKey, _ => new TransmissionContext(_config, exchange, msg, retransmit, _maxRetransmitCount));

            if (ctx.FailedTransmissionCount > 0)
            {
                ctx.CurrentTimeout = (Int32)(ctx.CurrentTimeout * _ackTimeoutScale);
            }
            else if (ctx.CurrentTimeout == 0)
            {
                ctx.CurrentTimeout = InitialTimeout(_ackTimeout, _ackRandomFactor);
            }

            _Log.Debug(m => m("Send request, failed transmissions: {0}", ctx.FailedTransmissionCount));

            ctx.Start();
        }
예제 #3
0
        private void PrepareRetransmission(Exchange exchange, Message msg, Action <TransmissionContext> retransmit)
        {
            TransmissionContext ctx = exchange.GetOrAdd <TransmissionContext>(
                TransmissionContextKey, _ => new TransmissionContext(_config, exchange, msg, retransmit));

            if (ctx.FailedTransmissionCount > 0)
            {
                ctx.CurrentTimeout = (Int32)(ctx.CurrentTimeout * _config.AckTimeoutScale);
            }
            else if (ctx.CurrentTimeout == 0)
            {
                ctx.CurrentTimeout = InitialTimeout(_config.AckTimeout, _config.AckRandomFactor);
            }

            if (log.IsDebugEnabled)
            {
                log.Debug("Send request, failed transmissions: " + ctx.FailedTransmissionCount);
            }

            ctx.Start();
        }