@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 "";
}
}