public static SendOptions WithRoutingSlip(this SendOptions options, RoutingSlip slip) { var serializedRoutingSlip = JsonConvert.SerializeObject(slip); options.WithMessageContext(MessageContext.RoutingSlip, serializedRoutingSlip); return(options); }
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); } }
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); }
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)); }
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); }
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); }
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)); }
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); }