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;
}
}