私の RESTful Spring ベースの Web サービスは、Gold、Silver、Bronze などの差別化されたユーザー リクエストを受け取ります。Gold リクエストは最高の優先度で、Bronze は最低の優先度です。そこで、単純なタイプの差別化されたサービス プロビジョニングを実装したいと考えています。実装するのに最も簡単な(ほとんど嘲笑された)戦略はどれですか?
優先度の高いものを提供している場合、優先度の低いものをしばらくブロックすることを考えています。このようなもの
@Controller
public class MyController {
@Autowired
private MyBusinessLogic businessLogic;
private static final int GOLD=0;
private static final int SILVER=1;
private static final int BRONZE=2;
private volatile int [] count = new int[3];
@RequestMapping
public String service(@RequestBody MyRequest request) {
count[request.getType()]++;
for(int i=0; i<request.getType(); i++)
if(count[i]>0)
Thread.sleep(500);
String result = businessLogic.service(request);
count[request.getType()]--;
return result;
}
}
それは合理的ですか?それとも、望ましくない副作用がありますか? より良い戦略をお勧めしますか?