订阅Salesforce变更数据捕获事件时遇连接超时问题求助
Salesforce Change Data Capture 连接超时问题排查与解决
问题背景
我按照官方教程尝试消费Salesforce Change Data Capture事件,执行以下步骤后出现连接超时错误:
- 克隆EMP-Connector仓库:
git clone https://github.com/forcedotcom/EMP-Connector.git - 构建项目:
cd EMP-Connector mvn clean package - 运行连接命令:
java -jar target/emp-connector-0.0.1-SNAPSHOT-phat.jar <username> <password> /data/Employee__ChangeEvent
报错信息
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. java.util.concurrent.ExecutionException: java.net.SocketTimeoutException: Connect Timeout at org.eclipse.jetty.client.util.FutureResponseListener.getResult(FutureResponseListener.java:118) at org.eclipse.jetty.client.util.FutureResponseListener.get(FutureResponseListener.java:101) at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:683) at com.salesforce.emp.connector.LoginHelper.login(LoginHelper.java:124) at com.salesforce.emp.connector.LoginHelper.login(LoginHelper.java:100) at com.salesforce.emp.connector.LoginHelper.login(LoginHelper.java:92) at com.salesforce.emp.connector.example.LoginExample.lambda$main$0(LoginExample.java:48) at com.salesforce.emp.connector.example.BearerTokenProvider.login(BearerTokenProvider.java:24) at com.salesforce.emp.connector.example.LoginExample.main(LoginExample.java:56) Caused by: java.net.SocketTimeoutException: Connect Timeout at org.eclipse.jetty.io.ManagedSelector$Connect.run(ManagedSelector.java:801) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
解决建议
1. 网络与代理检查
- 确认本地网络可正常访问Salesforce,直接登录Salesforce验证连通性。
- 企业网络下需配置JVM代理参数,运行命令时添加:
java -Dhttp.proxyHost=<代理地址> -Dhttp.proxyPort=<代理端口> -Dhttps.proxyHost=<代理地址> -Dhttps.proxyPort=<代理端口> -jar target/emp-connector-0.0.1-SNAPSHOT-phat.jar <username> <password> /data/Employee__ChangeEvent - 若使用VPN,确保连接正常且Salesforce域名在路由范围内。
2. 凭证与实例URL验证
- 用户名+密码需附加安全令牌(未设置IP白名单时必填),确认凭证正确。
- 指定Salesforce实例URL,修改运行命令:
示例实例URL:java -jar target/emp-connector-0.0.1-SNAPSHOT-phat.jar <username> <password> <实例URL> /data/Employee__ChangeEventhttps://na1.salesforce.com
3. 调整超时参数
- 延长连接超时时间,添加JVM参数:
(30000为30秒,可按需调整)java -Demp.connector.login.timeout=30000 -jar target/emp-connector-0.0.1-SNAPSHOT-phat.jar <username> <password> /data/Employee__ChangeEvent
4. 防火墙与IP白名单检查
- 确认本地防火墙未阻止Java程序的HTTPS(443端口)请求。
- 若Salesforce组织设置了IP白名单,将本地IP加入允许列表。
5. 更新EMP-Connector版本
- 拉取最新代码重新构建,修复已知bug:
git pull origin main mvn clean package
内容的提问来源于stack exchange,提问作者SharpCoder
相关产品推荐
相关产品推荐

