Доступ к заголовкам сообщений вне функций обработчика с помощью nservicebus - PullRequest
0 голосов
/ 19 июня 2019

Я использую nservicebus 7 в моем asp.net core 2.1 приложении.

Я хотел получить доступ к своим пользовательским заголовкам сообщений вне функций обработчика (особенно в классе репозитория).

Видел этот ответ , но почему-то оба варианта у меня не работают. Всякий раз, когда я пытаюсь получить доступ к ContextAccessor.get, возвращается нулевая ссылка.

Любая идея, что может быть не так, или любой другой способ получить доступ к IMessageHandlerContexts внешним функциям-обработчикам.

1 Ответ

0 голосов
/ 20 июня 2019

IMessageHandlerContext доступно только внутри обработчика. Однако вы можете передать его в качестве параметра другим частям вашего кода.

Например,

public async Task Handle(MyCommand message, IMessageHandlerContext context)
{
     var result = await SomeOtherFunction(message, context).ConfigureAwait(false);
}

Вы также можете прочитать заголовки в обработчике и передать только их в свой метод репозитория. См. Управление заголовками сообщений . Соответствующая часть ниже.

public class ReadHandler :
    IHandleMessages<MyMessage>
{
    public Task Handle(MyMessage message, IMessageHandlerContext context)
    {
        var headers = context.MessageHeaders;
        var nsbVersion = headers[Headers.NServiceBusVersion];
        var customHeader = headers["MyCustomHeader"];
        return Task.CompletedTask;
    }
}
...