但我认为一个方式模式只允许bus.send?
只要它具有正确设置的订阅存储,没有什么会阻止您从单向客户端执行bus.Publish
。如果别的东西填充该预订存储一些订阅(例如,你,通过在db手动插入它们,或者有其他出版商处理订阅/取消),那么事情可能实际上在发布发生;)
如何我应该为两个应用程序配置rebus吗?
而不必您的方案完全清晰的图像,我在想,
- 一个出版商,A,有一个输入队列:
publisherA
- 其他出版商,B,没有输入队列(即它是单向客户端)
- 两个发布者共享其订阅存储(例如,SQL Server中的表)
- 两个发布者发布程序集消息
StuffToPublish
个
- 其他端点有一个映射
StuffToPublish
到publisherA
端点映射 - 因此,从StuffToPublish
事件类型将使出版商从一条
- 发布的消息建立订阅和B一
bus.Subscribe
会去同一个用户,因为它们共享其认购存储
如果你想发布方的处理答复即使该事件被发布商B公布,可以使b提供rebus-return-address
头(否则会被自动设置,有B的输入队列)像这样:
bus.AttacheHeader(someEvent, Headers.ReturnAddress, "publisherA");
这样,答复将被发送到publisherA
输入队列。
再次感谢。正是我需要的! – Yin 2014-09-01 07:50:01