当我发布这样的事件时,有什么方法可以访问传奇中的标头?

 await busControl.Publish<IOrderCreated>(new
        {
            OrderId = dto.Id
        }, context =>
        {
            context.Headers.Set(LogConstansts.Common.OperationId,Guid.Parse(values.Single()).ToString());
            context.Headers.Set(LogConstansts.QueueMessageHeaderNames.Publisher, Request.RequestUri.AbsoluteUri);
        });


然后在传奇中

Initially(
           When(OrderCreated)
            .Then(context =>
                  {
                    //get headers somehow?
                     context.Instance.OrderId = context.Data.OrderId;
                  })

最佳答案

是的,您可以通过从行为上下文中获取消费上下文有效负载来访问它:

Initially(
    When(OrderCreated)
        .Then(context =>
        {
            ConsumeContext<IOrderCreated> c;
            if (context.TryGetPayload(out c))
            {
                c.Headers.Get<string>("myheader");
                // do something
            }
            context.Instance.OrderId = context.Data.OrderId;
        })

关于c# - 有什么方法可以在masstransit传奇中访问已发布事件的标题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45599211/

10-16 03:53