i can't set header on masstransit 4.X

31 views
Skip to first unread message

linjiaz...@gmail.com

unread,
Mar 22, 2018, 9:32:49 PM3/22/18
to masstransit-discuss
when i am in massTransit 3.x,i use follow code to set message header before send,its work.

public class SendObserver : ISendObserver
{
    public Task PostSend<T>(SendContext<T> context) where T : class
    {
        return Task.FromResult<object>(null);
    }

    public Task PreSend<T>(SendContext<T> context) where T : class
    {
        //1. get current thread identity object.
        var currentThreadIdentityObject = Thread.CurrentPrincipal.Identity is JustIMIdentity ? (Thread.CurrentPrincipal.Identity as JustIMIdentity).IdentityObject : null;

        if (currentThreadIdentityObject != null)
        {
            //2. set the headers.
            context.Headers.Set(AppSettingConfig.RabbitMqIdentityHeaderKey, currentThreadIdentityObject.StaffID);
        }

        return Task.FromResult<object>(null);
    }

    public Task SendFault<T>(SendContext<T> context, Exception exception) where T : class
    {
        return Task.FromResult<object>(null);
    }
}
and i register in autofac
//register in autofac
builder.Register(context =>
{
    var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
    {
         var uri = AppSettingConfig.RabbitMqBaseUri;

         var host = cfg.Host(new Uri(uri), x =>
         {
                    x.Username(AppSettingConfig.RabbitMqUserName);
                    x.Password(AppSettingConfig.RabbitMqUserPassword);
         });
    });

    busControl.ConnectSendObserver(new SendObserver());

    busControl.Start();

    return busControl;
 })
.SingleInstance()
.As<IBusControl>()
.As<IBus>();

builder.RegisterGeneric(typeof(RequestClient<,>)).AsSelf().AsImplementedInterfaces();

but when i update massTransit to 4.X,the message in queue is without header,it look like set header is not working,whats going on.
Reply all
Reply to author
Forward
0 new messages