Вызовите 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 для образцов.

Другие вопросы по тегам