一、我们在定时任务里面调用调用微服务,但是这个微服务时间执行时间比较久,直接报错了;
请问下 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)
官方新品
- 热议问题
-
mqtt下发消息失败
1
-
自定义http接口404
2
-
blade配置多数据源后debug报错 对象名 'blade_scope_data' 无效
2
-
http接口请求操作失败
1
-
http接口401
1
-
自开发的微服务和blade_system微服务不在一个服务器上,无法运行
2
-
请求http接口401
1
-
@PreAuth对应的表不存在
1
-
token过长
1
-
FeignClient远程调用blade-user服务,刚调用就触发熔断
1
扫一扫访问 Blade技术社区 移动端