Camel Salesforce 组件 403::未知客户端

问题描述 投票:0回答:1

我们目前使用 Camel 4.6.0 salesforce 组件。我们最近从 3.x 升级。每 3-4 小时,组件就会失败并出现以下错误:

o.a.c.c.s.i.s.SubscriptionHelper.lambda$onMessage$0 -连接失败:{advice={reconnect=handshake,interval=0},channel=/meta/connect,id=234,error=403::未知客户端,成功=false} -

几秒钟后,我们开始在日志中看到以下内容:

o.a.c.c.s.i.s.SubscriptionHelper.lambda$onMessage$0 - 握手失败:{failure={exception=java.util.concurrent.RejectedExecutionException:任务 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask@20a0f8d3[未完成,任务 = java.util.concurrent。 Executors$RunnableAdapter@2a5893a3[包装任务 = org.cometd.client.http.jetty.JettyHttpClientTransport$$Lambda$2343/0x00007fd8cfe7c5e0@249f6898]] 从 org.cometd.client.BayeuxClient$Scheduler@65a262a3 拒绝[已终止,池大小 = 0 ,活动线程= 0,排队任务= 0,已完成任务= 162],消息= {ext = {replay = true},supportedConnectionTypes = [长轮询],通道= /元/握手,id = 237,版本= 1.0 },connectionType =长轮询},通道= /元/握手,id = 237,成功= false}

看起来组件会尝试每 30 秒重新连接一次,但我们看到的是每 30 秒记录一次上述错误。此后该组件无法重新连接。我们必须重新启动应用程序。

为了尝试强制 salesforce 组件重新连接,我们在消费者上将bridgeEndpoint 设置为 true,并且 onException() 处理程序似乎没有被调用。

onException(SalesforceException.class)
  .onWhen(simple("${exception.message} ~~ 'error=403::Unknown client'"))
   .handled(true)
   .log(LoggingLevel.ERROR,"SalesforceException Handshake Failure")
   .log("Route sf-change-events-consumer status ${body}")
   .to(uses controlbus to restart the below route)
.end();

from("sf-change-events-consumer:salesforce:subscribe:{{salesforce.change-events.channel}}?initialReplayIdMap=#sfInitialReplayIdMap&bridgeErrorHandler=true")
.
.
.
end();

我做错了什么?我的理解是,bridgeEndpoint 将调用路由定义上方定义的 onException 处理程序?

收到 403 时,期望调用桥接错误处理程序,该处理程序可以重新启动路由并强制与 salesforce 握手/重新连接。

如果上述捕获异常并重新启动的机制不是正确的方法,我该怎么做才能确保重新连接有效?

apache-camel
1个回答
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.