我在自己的进程中使用NServiceBus(所以而不是使用通用主机),我想有一个特定顺序消息的多个消息处理程序。对于通用主机,您将实现ISpecifyMessageHandlerOrdering
,但我不知道如何在托管自己的NServiceBus过程时执行此操作,因为该接口在NServiceBus.Host.exe
中定义,我无法找到另一种方法来执行此操作。NServiceBus:指定消息顺序
这样做的目的是用户身份验证:在调用实际的消息处理程序之前,我首先要验证消息的发件人,这将发生在另一个更通用的消息处理程序中。该消息将是包含加密的用户名和密码和/或会话ID的类型。这种类型将用于几乎所有发送到服务器的命令(除了我认为的所有登录信息外)。这是使用NServiceBus进行用户认证的好方法吗?
目前,它拿起第二个处理程序,但没有按照正确的顺序。
更新
至于建议由David我试图创建一个IMessageModule
从CurrentMessageContext
读取头对用户进行认证。
我遇到了一些问题,在这里:
- 我第一次发送消息时,
bus.CurrentMessageContext
是null
。每次之后,它都会正确填写,我可以阅读标题。 - 当用户未通过身份验证时调用
bus.DoNotContinueDispatchingCurrentMessageToHandlers
不会停止调用消息处理程序。bus.Return(errorCode)
也没有。我还有其他方法可以做到吗?
出于好奇,为什么你不能使用通用主机? – 2010-11-04 17:51:52
要停止调用消息处理程序,我认为您需要抛出某种NotAuthenticatedException。 – 2010-11-04 18:19:16