NServiceBus: указание порядка сообщений
Я использую NServiceBus в своем собственном процессе (такне используя общий хост), и я хотел бы иметь несколько обработчиков сообщений для сообщения в определенном порядке. Для Generic Host вы бы реализовалиISpecifyMessageHandlerOrdering
, но я не знаю, как это сделать при размещении собственного процесса NServiceBus, так как этот интерфейс определен вNServiceBus.Host.exe
и я не смог найти другой способ сделать это.
Целью этого является аутентификация пользователя: перед вызовом фактического обработчика сообщений я сначала хотел бы аутентифицировать отправителя сообщения, что произошло бы в другом, более универсальном обработчике сообщений. Сообщение будет иметь тип, который содержит зашифрованное имя пользователя и пароль и / или идентификатор сеанса. Этот тип будет использоваться почти для всех команд, отправляемых на сервер (я думаю, все, кроме входа в систему). Это нормальный способ аутентификации пользователя с использованием NServiceBus?
В настоящее время он получает второй обработчик, но не в правильном порядке.
Обновить
По предложению Дэвида я попытался создатьIMessageModule
и чтение заголовков изCurrentMessageContext
аутентифицировать пользователя.
Я столкнулся с некоторыми проблемами здесь:
Когда я отправляю сообщение в первый раз,bus.CurrentMessageContext
являетсяnull
, Каждый раз после этого он заполняется правильно, и я могу читать заголовки.призваниеbus.DoNotContinueDispatchingCurrentMessageToHandlers
когда пользователь не аутентифицирован, не останавливает вызов обработчиков сообщений. Ни один не делаетbus.Return(errorCode)
, Есть ли другие способы, которыми я могу сделать это?