@Slf4j
@EnableScheduling
@Component
public class FyServeHeartConfig {
@Autowired
private RedisUtil redisUtil;
@Scheduled(fixedRate = 5000)
public void myTask() {
log.debug("开始心跳");
int expireCount = this.redisUtil.hasKey(FyConstant.FY_SERVE_EXPIRE) ? this.redisUtil.get(FyConstant.FY_SERVE_EXPIRE) : 0;
HttpResponse httpResponse = new HttpGetUtil(BaseApi.BASE_PAY_URL.getBaseUrl() + "/heartbeat").buildGet().execute();
if (httpResponse.getStatusLine().getStatusCode() != 200) {
log.debug("心跳失败");
this.redisUtil.set(FyConstant.FY_SERVE_EXPIRE, expireCount + 1);
}
if (httpResponse.getStatusLine().getStatusCode() != 200 && expireCount > 5) {
log.debug("次数超过5次,切换地址");
this.redisUtil.set(FyConstant.FY_SERVE_URL, BaseApi.BASE_PAY_URL_2.getBaseUrl());
}
if (httpResponse.getStatusLine().getStatusCode() == 200) {
log.debug("心跳成功");
//成功就删除缓存
if (this.redisUtil.hasKey(FyConstant.FY_SERVE_EXPIRE)) {
this.redisUtil.delete(FyConstant.FY_SERVE_EXPIRE);
}
//切换回主地址
String payUrl = this.redisUtil.get(FyConstant.FY_SERVE_URL);
if (payUrl.equals(BaseApi.BASE_PAY_URL_2.getBaseUrl())) {
this.redisUtil.set(FyConstant.FY_SERVE_URL, BaseApi.BASE_PAY_URL.getBaseUrl());
}
}
}
}