我正在构建一个将命令发送到其他端点的网站
影响域中的变化。如果某个企业的命令失败
原因,我希望能够使用Bus.Reply()
并发送命令失败消息
到ReturnAddress
。
TransportMessage
的端点
在尝试完成此操作时,我已在我的MsmqTransportConfig
中设置了InputQueue
web.config具有适当的Bus.Reply()
值;然后ReturnAddress
电话有效
正确。但是,当在指定队列中收到回复时,Web
网站继续消费它,这不是我想要发生的事情;我有另一个端点侦听同一个队列来使用这些事件。
有没有办法让NServiceBus使用发送的MsmqTransportConfig
标头
消息,或指示过程不要注意的过程
ReturnAddress
中指定的输入队列,或在TransportMessage
上以编程方式设置{{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}}将被填充,但总线不会消耗该地址的消息。