Example #1
0
        public static SendOptions WithRoutingSlip(this SendOptions options, RoutingSlip slip)
        {
            var serializedRoutingSlip = JsonConvert.SerializeObject(slip);

            options.WithMessageContext(MessageContext.RoutingSlip, serializedRoutingSlip);
            return(options);
        }
Example #2
0
        public static bool TryGetRoutingSlip(this IMessageBrokerContext mbc, out RoutingSlip routingSlip)
        {
            try
            {
                if (mbc.BrokeredMessage != null)
                {
                    if (mbc.BrokeredMessage.MessageContext != null)
                    {
                        if (mbc.BrokeredMessage.MessageContext.TryGetValue(MessageContext.RoutingSlip, out var rs))
                        {
                            RoutingSlip theSlip = JsonConvert.DeserializeObject <RoutingSlip>((string)rs);
                            routingSlip = theSlip;
                            return(true);
                        }
                    }
                }

                if (mbc.Container.TryGet <RoutingSlip>(out var slipFromContainer))
                {
                    routingSlip = slipFromContainer;
                    return(true);
                }

                routingSlip = null;
                return(false);
            }
            catch
            {
                routingSlip = null;
                return(false);
            }
        }
Example #3
0
 public static Task Send <TMessage>(this IMessageHandlerContext context,
                                    TMessage message,
                                    RoutingSlip slip,
                                    SendOptions options = null) where TMessage : ICommand
 {
     if (context.TryGetBrokeredMessageDispatcher(out var bmd))
     {
         return(bmd.Send(message, slip, context.GetTransactionContext(), options));
     }
     return(Task.CompletedTask);
 }
Example #4
0
        public static Task Forward(this IBrokeredMessageDispatcher dispatcher,
                                   InboundBrokeredMessage message,
                                   RoutingSlip slip,
                                   TransactionContext transactionContext)
        {
            var destination = slip.RouteToNextStep();

            message.WithRoutingSlip(slip);

            return(dispatcher.Forward(message, destination, transactionContext));
        }
Example #5
0
        public static Task Forward(this IMessageHandlerContext context, RoutingSlip slip)
        {
            if (context.TryGetBrokeredMessageDispatcher(out var brokeredMessageDispatcher))
            {
                var destination = slip.Route.FirstOrDefault()?.DestinationPath;
                if (!string.IsNullOrWhiteSpace(destination))
                {
                    return(brokeredMessageDispatcher.Forward(context.GetInboundBrokeredMessage(), slip, context.GetTransactionContext()));
                }
            }

            return(Task.CompletedTask);
        }
Example #6
0
 public static bool TryGetRoutingSlip(this IMessageHandlerContext mhc, out RoutingSlip routingSlip)
 {
     if (mhc is IMessageBrokerContext mbc)
     {
         if (mbc.TryGetRoutingSlip(out var rs))
         {
             routingSlip = rs;
             return(true);
         }
     }
     routingSlip = null;
     return(false);
 }
Example #7
0
        public static Task Send <TMessage>(this IBrokeredMessageDispatcher dispatcher,
                                           TMessage message,
                                           RoutingSlip slip,
                                           TransactionContext transactionContext = null,
                                           SendOptions options = null)
            where TMessage : ICommand
        {
            if (options == null)
            {
                options = new SendOptions();
            }

            var destination = slip.RouteToNextStep();

            options.WithRoutingSlip(slip);

            return(dispatcher.Send(message, destination, transactionContext, options));
        }
Example #8
0
 public static void AddRoutingSlip(this IMessageHandlerContext mhc, RoutingSlip routingSlip)
 {
     mhc.Container.Include(routingSlip);
 }
        public static InboundBrokeredMessage WithRoutingSlip(this InboundBrokeredMessage message, RoutingSlip slip)
        {
            var serializedRoutingSlip = JsonConvert.SerializeObject(slip);

            message.MessageContextImpl[MessageContext.RoutingSlip] = serializedRoutingSlip;
            return(message);
        }