但我認爲一個方式模式只允許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