Вызовите OutgoingHeaders, используя NServiceBus.Host
Используя NServiceBus 4.0.11 я хотел бы позвонить
Bus.OutgoingHeaders["user"] = "john";
Образец манипуляции заголовком показывает, как вызывать его с пользовательского хоста. Я хотел бы позвонить при использовании NServiceBus.Host.
Так что на самом деле я хотел бы иметь ссылку на экземпляр Bus для вызова OutgoingHeaders. Пробовал IWantCustomInitialization, но это дает мне исключение при вызове CreateBus в нем. INeedInitialization - это тоже не путь.
Как мне вызвать Bus.OutgoingHeaders["user"] = "john"; при использовании NServiceBus.Host?
1 ответ
Чтение вашего вопроса заставляет меня думать, что вы хотите добавить этот заголовок к определенному сообщению, которое вы хотите отправить во время инициализации / запуска или при обработке сообщения. Обычно заголовки имеют более общее поведение, поскольку их необходимо применять к нескольким сообщениям.
Вместо установки заголовка перед отправкой сообщения вы также можете добавить заголовок с помощью мутатора или поведения сообщения.
Поведение
public class OutgoingBehavior : IBehavior<SendPhysicalMessageContext>
{
public void Invoke(SendPhysicalMessageContext context, Action next)
{
Dictionary<string, string> headers = context.MessageToSend.Headers;
headers["MyCustomHeader"] = "My custom value";
next();
}
}
Mutator
public class MutateOutgoingTransportMessages : IMutateOutgoingTransportMessages
{
public void MutateOutgoing(object[] messages, TransportMessage transportMessage)
{
Dictionary<string, string> headers = transportMessage.Headers;
headers["MyCustomHeader"] = "My custom value";
}
}
Документация
См. http://docs.particular.net/nservicebus/messaging/message-headers для образцов.