feign调用出错

2021-08-02 01:03:10.467  INFO 1081424 --- [erListUpdater-0] c.netflix.config.ChainedDynamicProperty  115 : Flipping property: asset.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647

2021-08-02 01:05:12.583 ERROR 1081424 --- [io-10199-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet]    175 : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.netflix.hystrix.exception.HystrixRuntimeException: AssetService#getLedger() failed and no fallback available.] with root cause

java.net.ConnectException: Connection refused (Connection refused)

at java.net.PlainSocketImpl.socketConnect(Native Method)

at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)

at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)

at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)

at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)

at java.net.Socket.connect(Socket.java:606)

at sun.net.NetworkClient.doConnect(NetworkClient.java:175)

at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)

at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)

at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)

at sun.net.www.http.HttpClient.New(HttpClient.java:339)

at sun.net.www.http.HttpClient.New(HttpClient.java:357)

at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1226)

at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162)

at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056)

at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990)

at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1570)

at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1498)

at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)

at feign.Client$Default.convertResponse(Client.java:143)

at feign.Client$Default.execute(Client.java:68)

at com.alibaba.cloud.seata.feign.SeataFeignClient.execute(SeataFeignClient.java:59)

at org.springframework.cloud.openfeign.ribbon.RetryableFeignLoadBalancer$1.doWithRetry(RetryableFeignLoadBalancer.java:103)

at org.springframework.cloud.openfeign.ribbon.RetryableFeignLoadBalancer$1.doWithRetry(RetryableFeignLoadBalancer.java:88)

at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:287)

at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:180)

at org.springframework.cloud.openfeign.ribbon.RetryableFeignLoadBalancer.execute(RetryableFeignLoadBalancer.java:88)

at org.springframework.cloud.openfeign.ribbon.RetryableFeignLoadBalancer.execute(RetryableFeignLoadBalancer.java:54)

at com.netflix.client.AbstractLoadBalancerAwareClient$1.call(AbstractLoadBalancerAwareClient.java:104)

at com.netflix.loadbalancer.reactive.LoadBalancerCommand$3$1.call(LoadBalancerCommand.java:303)

at com.netflix.loadbalancer.reactive.LoadBalancerCommand$3$1.call(LoadBalancerCommand.java:287)

at rx.internal.util.ScalarSynchronousObservable$3.call(ScalarSynchronousObservable.java:231)

at rx.internal.util.ScalarSynchronousObservable$3.call(ScalarSynchronousObservable.java:228)

at rx.Observable.unsafeSubscribe(Observable.java:10327)

at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber$1.call(OperatorRetryWithPredicate.java:127)

at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.enqueue(TrampolineScheduler.java:73)

at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.schedule(TrampolineScheduler.java:52)

at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber.onNext(OperatorRetryWithPredicate.java:79)

at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber.onNext(OperatorRetryWithPredicate.java:45)

at rx.internal.util.ScalarSynchronousObservable$WeakSingleProducer.request(ScalarSynchronousObservable.java:276)

at rx.Subscriber.setProducer(Subscriber.java:209)

at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:138)

at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:129)

at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)

at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)

at rx.Observable.unsafeSubscribe(Observable.java:10327)

at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.drain(OnSubscribeConcatMap.java:286)

at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.onNext(OnSubscribeConcatMap.java:144)

at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:185)

at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:180)

at rx.Observable.unsafeSubscribe(Observable.java:10327)

at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94)

at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42)

at rx.Observable.unsafeSubscribe(Observable.java:10327)

at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber$1.call(OperatorRetryWithPredicate.java:127)

at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.enqueue(TrampolineScheduler.java:73)

at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.schedule(TrampolineScheduler.java:52)

at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber.onNext(OperatorRetryWithPredicate.java:79)

at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber.onNext(OperatorRetryWithPredicate.java:45)

at rx.internal.util.ScalarSynchronousObservable$WeakSingleProducer.request(ScalarSynchronousObservable.java:276)

at rx.Subscriber.setProducer(Subscriber.java:209)

at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:138)

at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:129)

at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)

at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)

at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)

at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)

at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)

at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)

at rx.Observable.subscribe(Observable.java:10423)

at rx.Observable.subscribe(Observable.java:10390)

at rx.observables.BlockingObservable.blockForSingle(BlockingObservable.java:443)

at rx.observables.BlockingObservable.single(BlockingObservable.java:340)

at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:112)

at org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient.execute(LoadBalancerFeignClient.java:65)

at com.alibaba.cloud.seata.feign.SeataLoadBalancerFeignClient.execute(SeataLoadBalancerFeignClient.java:56)

at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:108)

at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:78)

at feign.hystrix.HystrixInvocationHandler$1.run(HystrixInvocationHandler.java:106)

at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:302)

at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:298)

at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46)

at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)

at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)

at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)

at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)

at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)

at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)

at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)

at rx.Observable.unsafeSubscribe(Observable.java:10327)

at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:51)

at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)

at rx.Observable.unsafeSubscribe(Observable.java:10327)

at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)

at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)

at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)

at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)

at rx.Observable.unsafeSubscribe(Observable.java:10327)

at rx.internal.operators.OperatorSubscribeOn$SubscribeOnSubscriber.call(OperatorSubscribeOn.java:100)

at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction$1.call(HystrixContexSchedulerAction.java:56)

at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction$1.call(HystrixContexSchedulerAction.java:47)

at com.alibaba.cloud.seata.feign.hystrix.SeataHystrixConcurrencyStrategy$SeataContextCallable.call(SeataHystrixConcurrencyStrategy.java:73)

at com.netflix.hystrix.strategy.concurrency.HystrixContexSchedulerAction.call(HystrixContexSchedulerAction.java:69)

at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

其实就是应用分开服务器部署出的问题,建议大家还是先打开注册服务中心那里看看。

# 这里务必写自己的内网ip,不能写127。
eureka.instance.hostname=127.0.0.1 

这里写成调用的内网IP即可,当然了,还有超时问题,hystrix线程占满了等问题,我都遇到过,等毕业之后,换其他组件了。

建议的设置这样,最大线程不能写1.
# 最小线程数
hystrix.threadpool.default.coreSize=1
# 最大线程数
hystrix.threadpool.default.maximumSize=200

 

<think>好的,用户问的是关于XXL-JOB远程调用的配置和实现方式。首先,我需要回顾一下XXL-JOB的基本架构,它分为调度中心和执行器两部分。调度中心负责任务的调度,执行器则负责具体任务的执行,远程调用应该涉及到这两部分的交互。 用户提到配置,可能需要说明如何在调度中心添加执行器,配置执行器的地址等信息。然后,任务的具体实现方式,比如如何通过Feign或者HTTP进行远程调用。记得用户提供的引用中有提到Feign调用的问题,需要特别注意非Web请求下Feign的使用可能会报错,解决方案是模拟Web请求,这部分要重点强调。 接下来,步骤可能需要分点说明:首先是执行器配置,包括在调度中心注册,设置AppName和地址;然后是任务方法的编写,使用@XxlJob注解;接着是触发远程调用,比如在任务方法中调用Feign客户端或发送HTTP请求。需要提醒用户注意网络连通性和鉴权问题,比如XXL-JOB的accessToken配置,确保调度中心和执行器之间的通信安全。 可能还需要提到日志查看和故障排查,比如在调度中心查看执行日志,帮助用户定位问题。另外,引用中的解决方案需要整合进去,特别是关于模拟MockHttpServletRequest的部分,避免Feign调用出错。 最后,生成的相关问题要涵盖配置步骤、调用方式、常见错误处理、多环境配置以及日志查看,这样用户如果有其他疑问也能找到方向。需要确保回答结构清晰,步骤明确,用户能一步步跟着操作,同时引用正确的参考资料,保证信息可靠。</think># XXL-JOB远程调用配置及实现方式 ## 一、基础配置步骤 1. **执行器注册** 在XXL-JOB调度中心添加执行器,配置项包括: - `AppName`:唯一标识执行器的应用名称 - 地址类型:推荐选择"自动注册",执行器启动后会自动上报地址 - 注册方式:支持通过内置服务注册或手动录入 2. **任务配置** 创建任务时需指定: ```java @XxlJob("demoJobHandler") public ReturnT<String> execute(String param) { // 远程调用逻辑 return ReturnT.SUCCESS; } ``` 调度类型选择"BEAN模式",JobHandler填写注解值[^1] ## 二、远程调用实现方式 ### 1. HTTP直连调用 ```java // 使用RestTemplate发起请求 String result = restTemplate.postForObject("http://target-service/api", params, String.class); ``` 需确保目标服务接口可达且完成鉴权 ### 2. Feign客户端调用 ```java @FeignClient(name = "remote-service") public interface RemoteServiceClient { @PostMapping("/execute") String executeTask(@RequestBody TaskParams params); } // 在任务方法中调用 RemoteServiceClient client = Feign.builder().target(RemoteServiceClient.class, "http://remote-service"); client.executeTask(params); ``` 注意:非Web环境需要添加请求上下文模拟: ```java // 解决Feign在定时任务中的调用问题 RequestContextHolder.setRequestAttributes( new ServletRequestAttributes(new MockHttpServletRequest()) ); ``` [^2] ## 三、关键配置项 | 配置项 | 说明 | 示例值 | |-----------------|-----------------------------|---------------------| | xxl.job.accessToken | 调度中心与执行器通信凭证 | "default_token_123" | | xxl.job.executor.ip | 执行器IP(空则自动获取) | "" | | xxl.job.executor.port | 执行器端口 | 9999 | ## 四、常见问题处理 1. **调用超时** 调整`xxl.job.executor.logretentiondays`和超时设置 2. **网络隔离** 检查防火墙策略,确保端口双向可达 3. **序列化异常** 统一使用JSON格式进行数据交互
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值