NServiceBus.MessageOperationsInvokeHandlerContext.HandleCurrentMessageLater C# (CSharp) Method

HandleCurrentMessageLater() public static method

public static HandleCurrentMessageLater ( IInvokeHandlerContext context ) : System.Threading.Tasks.Task
context IInvokeHandlerContext
return System.Threading.Tasks.Task
        public static Task HandleCurrentMessageLater(IInvokeHandlerContext context)
        {
            if (context.HandleCurrentMessageLaterWasCalled)
            {
                return TaskEx.CompletedTask;
            }

            var messageBeingProcessed = context.Extensions.Get<IncomingMessage>();
            var settings = context.Builder.Build<ReadOnlySettings>();

            var cache = context.Extensions.Get<IPipelineCache>();
            var pipeline = cache.Pipeline<IRoutingContext>();

            var outgoingMessage = new OutgoingMessage(
                messageBeingProcessed.MessageId,
                messageBeingProcessed.Headers,
                messageBeingProcessed.Body);

            var routingContext = new RoutingContext(outgoingMessage, new UnicastRoutingStrategy(settings.LocalAddress()), context);

            return pipeline.Invoke(routingContext);
        }
    }

Usage Example

        public async Task HandleCurrentMessageLater()
        {
            await MessageOperationsInvokeHandlerContext.HandleCurrentMessageLater(this).ConfigureAwait(false);

            HandleCurrentMessageLaterWasCalled = true;
            DoNotContinueDispatchingCurrentMessageToHandlers();
        }
MessageOperationsInvokeHandlerContext