应用背景
项目中需要后端调用调度中心API服务,调度中心设置了登录,调度中心API接口对cookie进行了验证,feign访问调度中心API服务时,需通过其登录验证。
调度中心API
调度中心登录API注意原始登录api返回值
调度中心业务API服务
服务接口PostMan测试测试发现登录调度中心后,在http响应头部有下列数据:
Set-Cookie →XXL_JOB_LOGIN_IDENTITY=6333303830376536353837616465323835626137616465396638383162336437; Path=/; HttpOnly
其他服务Api调用时只需在head中添加cookie信息
Cookie=XXL_JOB_LOGIN_IDENTITY=6333303830376536353837616465323835626137616465396638383162336437
Spring Clould Feign服务
FeignClient客户端声明式调用调度中心Api服务
与普通FeignClient相比作了一下几点处理:
调度中心登录Api服务返回值改为feign.Response,原始的http请求响应,方便获取cookie值;调度中心其他Api服务,新增@RequestHeader("Cookie") String cookie参数,传递cookie值,通过调度中心登录验证;
ClientHystrix熔断器进行服务降级,超时降级、失败次数降级、故障降级、限流降级等。
定时登录调度中心
由于调度中心cookie有效时间为2小时,需每两小时登录一次,获取新的cookie,由于可以 不考虑分布式情况,特选择轻量级@Scheduled定制定时任务。下篇文章详解该定时任务。
结语
每天收获一点,进步一点!