3
嘗試推遲單向客戶端發送消息時出現以下異常的原因是什麼 System.InvalidOperationException「不能使用我們自己作爲超時管理器,因爲我們是單向客戶端「爲什麼我不推遲給單向客戶端發送消息
嘗試推遲單向客戶端發送消息時出現以下異常的原因是什麼 System.InvalidOperationException「不能使用我們自己作爲超時管理器,因爲我們是單向客戶端「爲什麼我不推遲給單向客戶端發送消息
單向客戶端是不能接收消息的Rebus客戶端,因此它沒有輸入隊列。
await bus.Defer(...)
的工作方式是通過向「超時管理器」發送帶有some special headers的消息,該超時管理器默認爲延遲消息的端點。
但由於單向客戶端沒有輸入隊列,所以沒有地方發送延遲消息。
你可以做一個單向的客戶端通過配置外部超時經理這樣推遲的消息:
Configure.With(...)
.(...)
.Options(o => o.UseExternalTimeoutManager(anotherQueue))
.Start();
那麼這將導致客戶端遞延消息發送到該隊列。
此外,你就必須在rbs2-defer-recipient
頭手動設置爲其他輸入隊列,使超時經理知道向何處發送消息時,是時候要消耗的(*)。
我希望能解釋它:)請讓我知道如果它不清楚。
*)這實際上是不滷麪4的情況下,因爲bus.Defer
使用的普通的終端映射到路由消息。