Java salesforce EMP连接器API版本37.0失败,错误消息为API版本不受支持

Java salesforce EMP连接器API版本37.0失败,错误消息为API版本不受支持,java,salesforce,connector,Java,Salesforce,Connector,我使用emp连接器来使用salesforce straming API,我从salesforce文档及其API版本36.0的工作文件中的LogingExample开始,但是当我尝试使用API版本37.0时 我得到了如下回复 [{“channel”:“/meta/handshake”,“error”:“400::不支持的API版本。 仅支持API版本“35.0”和“36.0” 支持。“,“成功”:false}] 当我指定API版本36.0时,我的代码工作正常,并通过PushTopic 我知道应该支

我使用emp连接器来使用salesforce straming API,我从salesforce文档及其API版本36.0的工作文件中的LogingExample开始,但是当我尝试使用API版本37.0时

我得到了如下回复

[{“channel”:“/meta/handshake”,“error”:“400::不支持的API版本。 仅支持API版本“35.0”和“36.0” 支持。“,“成功”:false}]

当我指定API版本36.0时,我的代码工作正常,并通过
PushTopic

我知道应该支持API版本37.0,所以无法找出我做错了什么

代码没有问题,因为当我指定API版本36.0时,它工作得很好,仍然将代码粘贴到这里以供参考

public class SFPoc {
public static void main(String[] argv) throws Exception {
    String userName = "<someuser>";
    String password = "<pwd>";
    /*String pushTopicName = "/topic/InvoiceStatementUpdates";*/
    String pushTopicName = "/topic/Lead2";
    long replayFrom = EmpConnector.REPLAY_FROM_EARLIEST;
    String securityToken = "<securityToken>";

    BayeuxParameters custom = getBayeuxParamWithSpecifiedAPIVersion("37.0");
    BayeuxParameters params = null;
    try {
        params = login(userName, password +  securityToken, custom);
    } catch (Exception e) {
        e.printStackTrace();
    }

    Consumer<Map<String, Object>> consumer = event -> System.out.println(String.format("Received:\n%s", event));
    EmpConnector connector = new EmpConnector(params);

    connector.start().get(10, TimeUnit.SECONDS);

    TopicSubscription subscription = connector.subscribe(pushTopicName, replayFrom, consumer).get(10, TimeUnit.SECONDS);

    System.out.println(String.format("Subscribed: %s", subscription));
}

private static BayeuxParameters getBayeuxParamWithSpecifiedAPIVersion(String apiVersion) {
    BayeuxParameters params = new BayeuxParameters() {

        @Override
        public String version() {
            return apiVersion;
        }

        @Override
        public String bearerToken() {
            return null;
        }

    };
    return  params;
}
}
公共类SFPoc{
公共静态void main(字符串[]argv)引发异常{
字符串userName=“”;
字符串密码=”;
/*字符串pushTopicName=“/topic/InvoiceStatementUpdates”*/
字符串pushTopicName=“/topic/Lead2”;
long replayFrom=EmpConnector.REPLAY_FROM_;
字符串securityToken=“”;
BayeuxParameters custom=getbayeuxparamwithspecifiedapi版本(“37.0”);
BayeuxParameters params=null;
试一试{
params=登录(用户名、密码+securityToken、自定义);
}捕获(例外e){
e、 printStackTrace();
}
Consumer=event->System.out.println(String.format(“已接收:\n%s”,事件));
EmpConnector连接器=新的EmpConnector(参数);
connector.start().get(10,TimeUnit.SECONDS);
TopicSubscription subscription=connector.subscripte(pushTopicName,replayFrom,consumer).get(10,TimeUnit.SECONDS);
System.out.println(String.format(“订阅:%s”,订阅));
}
私有静态BayeuxParameters getBayeuxParamWithSpecifiedAPIVersion(字符串apiVersion){
BayeuxParameters params=新的BayeuxParameters(){
@凌驾
公共字符串版本(){
返回版本;
}
@凌驾
公共字符串bearerToken(){
返回null;
}
};
返回参数;
}
}

我已在emp连接器中将更改推送到master,修改版本<37的端点。你能试试这个版本,看看它是否能解决你的问题吗?

非常感谢,我会在某个时候试用它,并在这里更新结果。我仍然会遇到同样的错误,当我尝试37.0版时,还有一件事,正如我在问题中提到的,它总是使用36.0版,我面临的问题是,当我指定37.0版时,实际上它在EMP代码中进行了一些小的修改后才起作用,我认为您错过了修改ComedU REPLAY的一小部分,ComedU REPLAY和ComedU REPLAY都指向samecan。您也可以检查并推动这些更改,谢谢