2017-06-07 63 views

回答

2

在這種情況下重試的問題是,Publish調用失敗的唯一原因是代理連接丟失(出於任何原因:網絡等)。

在這種情況下,用於接收消息的連接也會丟失,這意味着連接到代理的另一個節點可能已經提取了消息。因此,在這種情況下重試會很糟糕,因爲它會重新連接到代理併發送,但之後消息無法被確認(因爲它很可能在另一個線程/工作人員身上找到)。

這裏通常的做法是讓它失敗,當接收端點重新連接時,消息將被重新發送給消費者,消費者然後將呼叫Publish並達到期望的結果。

您應該確保您的消費者可以正確處理此問題(搜索idempotent)以避免導致業務邏輯中斷的故障。