一、我们在定时任务里面调用调用微服务,但是这个微服务时间执行时间比较久,直接报错了;
请问下 blade-job调用微服务,如何设置调用微服务等待的时长,不让超时
feign是有一个强制的过期时间的,如果执行任务时间很长,你又要一定等他执行完获取返回后进行下一步操作,可以用异步调用,如果异步也不行,就用mq吧,或者重新设计方法调用链。
配置文件参考
# application.yml feign: client: config: default: # 针对所有服务 connectTimeout: 5000 # 连接超时(单位:ms) readTimeout: 30000 # 读取响应超时(单位:ms) ribbon: ConnectTimeout: 5000 # Ribbon 连接超时 ReadTimeout: 30000 # Ribbon 读取超时 MaxAutoRetries: 1 # 重试次数(同一实例) MaxAutoRetriesNextServer: 1 # 切换实例重试次数
异步调用参考
// 启用异步支持(在启动类添加)
@EnableAsync public class Application { ... } // 在 Service 中定义异步方法 @Service public class AsyncService { @Autowired private RemoteClient remoteClient; @Async // 使用独立线程池执行 public CompletableFuture<Response> asyncCall() { Response result = remoteClient.call(); return CompletableFuture.completedFuture(result); } } // 定时任务中调用 @Scheduled(fixedDelay = 5000) public void scheduledTask() { asyncService.asyncCall() .thenAccept(response -> { // 异步处理结果(如更新数据库、触发后续操作) }) .exceptionally(ex -> { // 异常处理(如记录日志、重试) return null; }); }
讨论(0)
-
# application.yml
feign:
client:
config:
default: # 针对所有服务
connectTimeout: 5000 # 连接超时(单位:ms)
readTimeout: 30000 # 读取响应超时(单位:ms)
ribbon:
ConnectTimeout: 5000 # Ribbon 连接超时
ReadTimeout: 30000 # Ribbon 读取超时
MaxAutoRetries: 1 # 重试次数(同一实例)
MaxAutoRetriesNextServer: 1 # 切换实例重试次数
采用这种方式,直接在当前服务里面 修改yml可以么
回答:
2025-03-25 13:33
还在么
讨论(0)
官方新品
- 热议问题
-
redis缓存获取的时候报错了
1
-
系统字典自动生成 key=-1 的作用
1
-
ELK启动成功,怎么把各个微服务模块日志同步到elk
1
-
数据大屏 对接 iot接口 token 怎么自动获取
1
-
组态绑定的数据,页面中不展示,报错如下图。怎么修改?
1
-
组态数据有返回,但是页面上不显示是什么原因?
1
-
数据大屏 如何订阅 物联网平台 数据并显示
1
-
ureport2 二维码
1
-
组态与物联网中设备产品如何绑定及获取数据
1
-
登录系统返回:用户租户未授权
2
扫一扫访问 Blade技术社区 移动端