使用NServiceBus.Host调用OutgoingHeaders

时间:2015-08-20 15:11:12

标签: nservicebus nservicebus4

使用NServiceBus 4.0.11 我想致电

Bus.OutgoingHeaders["user"] = "john";

Header Manipulation示例显示了如何使用自定义主机调用它。 我想在使用NServiceBus.Host时调用它。

所以实际上我想引用一个总线实例来调用OutgoingHeaders。 试过IWantCustomInitialization,但在调用CreateBus时给了我一个例外。 INeedInitialization不是两种方式。

我该怎么称呼Bus.OutgoingHeaders [“user”] =“john”;使用NServiceBus.Host?

1 个答案:

答案 0 :(得分:1)

阅读您的问题让我觉得您希望将此标题添加到您希望在初始化/启动期间或处理消息时发送的特定消息。通常,标头具有更通用的行为,因为它们需要应用于多个消息。

您可以通过消息mutator 行为添加标题,而不是在发送消息之前设置标题。

行为

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#replying-to-a-saga-writing-outgoing-headers了解样本。