2016-04-14 68 views

回答

1

單向客戶端是不能接收消息的Rebus客戶端,因此它沒有輸入隊列。

await bus.Defer(...)的工作方式是通過向「超時管理器」發送帶有some special headers的消息,該超時管理器默認爲延遲消息的端點。

但由於單向客戶端沒有輸入隊列,所以沒有地方發送延遲消息。

你可以做一個單向的客戶端通過配置外部超時經理這樣推遲的消息:

Configure.With(...) 
    .(...) 
    .Options(o => o.UseExternalTimeoutManager(anotherQueue)) 
    .Start(); 

那麼這將導致客戶端遞延消息發送到該隊列。

此外,你就必須在rbs2-defer-recipient頭手動設置爲其他輸入隊列,使超時經理知道向何處發送消息時,是時候要消耗的(*)。

我希望能解釋它:)請讓我知道如果它不清楚。


*)這實際上是不滷麪4的情況下,因爲bus.Defer使用的普通的終端映射到路由消息。

相關問題