考虑服务器上的项目队列。然后,客户端使用 REST Web 服务一次读取 10 个排队的项目。自然,当客户端消费了这些项目时,服务器应该在服务器端删除它们。
问:如果我们同时考虑健壮性、网络负载和宁静性,最好的方法是什么?
我可以想到三种可能的解决方案:
客户要求新项目。然后服务器...
- 发送项目 1..10 (
GET
) 并立即删除它们。希望物品到达客户手中。 - 发送项目 1..10 (
GET
),客户端为 1..10 ( ) 发送 ACK,DELETE
服务器删除项目。 - 发送项目 1..10 (
GET
)。下次客户端请求 11..20 (GET
) 时,先前的项目会在服务器上被删除。
我相信#1和#3都违反了宁静原则。例如,只有DELETE
方法可以删除对象。但是,它们都避免了 ACK 命令的数据流量。
不知道这里什么是最好的。也许有更好的解决方案?