使用NServiceBus 4.0.11 我想致电
Bus.OutgoingHeaders["user"] = "john";
Header Manipulation示例显示了如何使用自定义主机调用它。 我想在使用NServiceBus.Host时调用它。
所以实际上我想引用一个总线实例来调用OutgoingHeaders。 试过IWantCustomInitialization,但在调用CreateBus时给了我一个例外。 INeedInitialization不是两种方式。
我该怎么称呼Bus.OutgoingHeaders [“user”] =“john”;使用NServiceBus.Host?
答案 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();
}
}
public class MutateOutgoingTransportMessages : IMutateOutgoingTransportMessages
{
public void MutateOutgoing(object[] messages, TransportMessage transportMessage)
{
Dictionary<string, string> headers = transportMessage.Headers;
headers["MyCustomHeader"] = "My custom value";
}
}