Java 如何限制一个用户同时访问方法的次数
我有一个项目,其中我只需要为一个用户同时提供5个访问方法的请求 对于eg用户1:已经向我的方法发送了6个同时请求,那么我的应用程序必须向他发送超过同时请求限制的错误 但同时,系统不应阻止来自多个用户的同时请求Java 如何限制一个用户同时访问方法的次数,java,spring,Java,Spring,我有一个项目,其中我只需要为一个用户同时提供5个访问方法的请求 对于eg用户1:已经向我的方法发送了6个同时请求,那么我的应用程序必须向他发送超过同时请求限制的错误 但同时,系统不应阻止来自多个用户的同时请求 for example user1 : sends 2 requests user 2 sends : 4 requests this should be accepted 这是我的示例控制器 @RequestMapping(value = "/sendRequest", method
for example
user1 : sends 2 requests
user 2 sends : 4 requests
this should be accepted
这是我的示例控制器
@RequestMapping(value = "/sendRequest", method = RequestMethod.POST)
public @ResponseBody Response getSessionId(
@PathParam("username") String username,
@PathParam("password") String password) {
User user = checkAuth(username,password);
response = sendRequest.send; //I need to apply check on this call
}
有可能以任何方式这样做吗
我知道我们可以限制同时请求的数量,但是我们可以限制不同用户模拟请求的数量吗您可以保留一个会话变量,您可以在每次调用sendRequest.send之前检查并增加该变量,然后在调用后减少该变量
//pseudo
int simultaneousRequests = session.get("simultaneousRequests") == null ? 0 : (int)session.get("simultaneousRequests");
if (simultaneousRequests >= 5) {
throw SomeException();
}
session.put("simultaneousRequests", simultaneousRequests + 1);
response = sendRequest.send();
session.put("simultaneousRequests", simultaneousRequests - 1);
我建议您在需要节流的API调用中使用add-that过滤器。但是,您需要在每个HTTP请求(可能是HTTP头)中发送一个唯一标识符,以标识使用此方法的每个用户