spring cloud HystrixCollapser
@Service public class CollService { @HystrixCollapser(batchMethod = "getMembers", collapserProperties = { //收集1秒内的请求 @HystrixProperty(name = "timerDelayInMilliseconds", value = "1000") }) public Future<Member> getMember(Integer id) { System.out.println("执行单个查询的方法"); return null; } @HystrixCommand public List<Member> getMembers(List<Integer> ids) { List<Member> mems = new ArrayList<Member>(); for(Integer id : ids) { System.out.println(id); Member m = new Member(); m.setId(id); m.setName("angus"); mems.add(m); } return mems; } }
@RestController public class CollController { @Autowired private CollService collService; @RequestMapping(value = "/coll", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public String testCollapse() throws Exception { // 连续执行3次请求 Future<Member> f1 = collService.getMember(1); Future<Member> f2 = collService.getMember(2); Future<Member> f3 = collService.getMember(3); Member p1 = f1.get(); Member p2 = f2.get(); Member p3 = f3.get(); return ""; } }