サーバー上のアイテムのキューを考えてみましょう。次にクライアントは、REST Web サービスを使用して、一度に 10 個のキューに入れられたアイテムを読み取ります。当然、クライアントがこれらのアイテムを消費すると、サーバーはそれらをサーバー側で削除する必要があります。
Q: 堅牢性、ネットワーク負荷、および安らぎの両方を考慮する場合、どのアプローチが最適ですか?
考えられる解決策は次の 3 つです。
クライアントは新しいアイテムを要求します。サーバーはその後...
- アイテム 1..10 (
GET
) を送信し、すぐに削除します。うまくいけば、アイテムはクライアントに到着しました。 - アイテム 1..10 を送信し (
GET
)、クライアントは 1..10 の ACK を送信し (DELETE
)、サーバーはアイテムを削除します。 - アイテム 1..10 (
GET
) を送信します。次にクライアントが 11..20 (GET
) を要求すると、以前の項目はサーバーから削除されます。
#1と#3の両方が安らかな原則に違反していると思います。例:DELETE
メソッドのみがオブジェクトを削除できます。ただし、どちらも ACK コマンドのデータ トラフィックを回避します。
ここで何が最善かわかりません。おそらく、さらに良い解決策がありますか?