有没有办法使用NServiceBus欺骗邮件的返回地址?

时间:2011-01-19 19:05:37

标签: c# nservicebus

我正在构建一个将命令发送到其他端点的网站 影响域中的变化。如果某个企业的命令失败 原因,我希望能够使用Bus.Reply()并发送命令失败消息 到ReturnAddress

中指定的TransportMessage的端点

在尝试完成此操作时,我已在我的MsmqTransportConfig中设置了InputQueue web.config具有适当的Bus.Reply()值;然后ReturnAddress电话有效 正确。但是,当在指定队列中收到回复时,Web 网站继续消费它,这不是我想要发生的事情;我有另一个端点侦听同一个队列来使用这些事件。

有没有办法让NServiceBus使用发送的MsmqTransportConfig标头 消息,或指示过程不要注意的过程 ReturnAddress中指定的输入队列,或在TransportMessage上以编程方式设置{{1}}值的方式?

1 个答案:

答案 0 :(得分:2)

事实证明可以做到这一点。这是我最终使用的配置块:

var config = Configure.WithWeb().StructureMapBuilder(ObjectFactory.GetInstance<IContainer>()).XmlSerializer();
config.UnicastBus().MsmqTransport();
config.Configurer
    .ConfigureComponent<MsmqTransport>(ComponentCallModelEnum.Singleton)
    .ConfigureProperty(t => t.InputQueue, "MyReturnQueue");
config.CreateBus().Start();

我还没有仔细查看代码以确切知道发生了什么,但似乎如果web.config文件中没有MsmqTransportConfig条目,则传输将不会监听其输入队列。因此,通过在创建总线之前以编程方式设置InputQueue属性,ReturnAddress的{​​{1}}将被填充,但总线不会消耗该地址的消息。