如何在NServiceBus中实现访问控制处理程序

时间:2010-11-29 11:50:21

标签: c# .net nservicebus

只是想知道,如果有办法在NServiceBus中实现访问控制消息处理程序。'访问控制处理程序'我的意思是一个处理程序应该总是在其他处理程序之前执行并且应该控制(或者更确切地防止执行其他处理程序。)

有人知道如何在NServiceBus中实现这个吗?

我已指定要在EndPointConfig中执行的处理程序的优先级为

public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, ISpecifyMessageHandlerOrdering
{
    #region ISpecifyMessageHandlerOrdering Members

    public void SpecifyOrder(Order order)
    {
        order.Specify<First<AccessControlHandler>>();
    }

    #endregion
}

提前致谢,

维杰。

1 个答案:

答案 0 :(得分:0)

您可以像以下

一样创建AccessControlHandler
 public class AccessControlHandler : IHandleMessages<IMessage>
{
    public IBus Bus { get; set; }

    public void Handle(IMessage message)
    {
        IDictionary<string, string> headers = Bus.CurrentMessageContext.Headers;
        string token;

        if (headers.TryGetValue("access_token", out token))
        {
            if (token == "MY_SECRET")
            {
                Console.WriteLine("User authenticated");
                return;
            }
        }

        Console.WriteLine("User not authenticated");
        Bus.DoNotContinueDispatchingCurrentMessageToHandlers();
    }

最后一行是一个重要的行,因为它告诉总线消息成功但是没有将消息传递到管道下面