Есть ли способ получить доступ к заголовкам опубликованного события в masstransit saga?

Есть ли способ получить доступ к заголовкам в саге, когда я опубликовал подобное событие?

 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; 
                  })

person TjDillashaw    schedule 09.08.2017    source источник


Ответы (1)


Да, вы можете получить к нему доступ, получив полезную нагрузку контекста потребления из контекста поведения:

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; 
        })
person Alexey Zimarev    schedule 09.08.2017