예제 #1
0
        void SendToErrorQueue(TransportMessage message)
        {
            Logger.InfoFormat("Send message to error queue, {0}", FaultManager.ErrorQueue);

            message.ReplyToAddress = TransportMessageHelpers.GetReplyToAddress(message);
            MessageSender.Send(message, FaultManager.ErrorQueue);
        }
예제 #2
0
        protected override void Send(Unicast.Transport.TransportMessage message, Address errorQueue)
        {
            var failedQ = TransportMessageHelpers.GetReplyToAddress(message);

            var sat = Configure.Instance.Builder.Build <SecondLevelRetries>();

            if (failedQ == sat.InputAddress)
            {
                Logger.InfoFormat("The message was sent from the SecondLevelRetries satellite. Sending the message direct to the error queue!");

                base.Send(message, sat.ErrorQueue);
                return;
            }

            base.Send(message, errorQueue);
        }
예제 #3
0
        void Defer(TimeSpan defer, TransportMessage message)
        {
            message.ReplyToAddress = TransportMessageHelpers.GetReplyToAddress(message);

            TransportMessageHelpers.SetHeader(message, Headers.Expire, (DateTime.UtcNow + defer).ToWireFormattedString());
            TransportMessageHelpers.SetHeader(message, SecondLevelRetriesHeaders.Retries, (TransportMessageHelpers.GetNumberOfRetries(message) + 1).ToString());

            if (!TransportMessageHelpers.HeaderExists(message, SecondLevelRetriesHeaders.RetriesTimestamp))
            {
                TransportMessageHelpers.SetHeader(message, SecondLevelRetriesHeaders.RetriesTimestamp, DateTime.UtcNow.ToWireFormattedString());
            }

            Logger.InfoFormat("Defer message and send it to {0} using the timeout manager at {1}", message.ReplyToAddress, TimeoutManagerAddress);

            MessageSender.Send(message, TimeoutManagerAddress);
        }