公司A具有基於異步池的web服務以進行通知。 B公司檢查通知。每當它讀取新的通知時,A都會從系統中刪除它們。因此後續的讀取請求只返回新的通知。如果在30秒內沒有響應,還需要客戶端B中斷連接。Web服務設計
這會導致一個潛在的問題:由於意外的緩慢,A可能會在請求中刪除通知並將響應發回,而B已經中斷連接。在這種情況下,通知會丟失。現在人們可以爭辯說,核心問題在於操作領域(HTTP響應必須在20秒內完成)仍然在實踐中,但這並不總是可行的。
如何設計B(客戶端)以避免此問題?
我可以看到的一種方式是不要刪除A的通知,並讓B知道它的狀態,以便它知道從處理通知所需的ID開始,但是這假定ID將是順序的。哪個由A控制。即使B定義了它自己的序列A也必須被修改以返回它。
還有其他方法嗎?
謝謝!