2011-01-19 40 views
0

我正在构建一个网站,它将命令发送到其他端点,以便 在域中发生效果更改。如果某个命令因商业原因而失败,我希望能够使用Bus.Reply()并将命令失败消息 发送到TransportMessage中指定的ReturnAddress处的端点。有没有办法使用NServiceBus欺骗消息的返回地址?

在试图完成此操作时,我已在web.config中设置了MsmqTransportConfig以具有合适的InputQueue值;拨打Bus.Reply()然后正确地工作 。但是,当在指定队列中收到回复时,网站将继续使用它,这不是我想要发生的情况;我有另一个端点正在侦听同一队列以使用这些事件。

有没有办法有NServiceBus使用ReturnAddress头所发送 消息,还是有办法来指示过程不注重在MsmqTransportConfig指定的 iput队列,或者一个方法来编程设置ReturnAddress值在TransportMessage

回答

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属性,可以填充TransportMessageReturnAddress,但总线不会消耗该地址处的消息。

相关问题