当前位置: 首页 > 知识库问答 >
问题:

如何设置Camel RESTful客户端超时和HTTPClientPolicy

徐景明
2023-03-14

我们能以编程方式获取HTTPClientPolicy对象吗?或者我们必须在传递给template.send()的Camel URI中引用它,例如:

template.send(“cxfrs://”+url+“/match/”+appId+“/”+reqid?httpclientapi=true&http.connection.timeout=5000

共有1个答案

黄扬
2023-03-14

如果您想用XML文件配置endpoint超时,那么Raphaëλ之前发布的链接是正确的。但是,如果您希望完全以编程方式完成,可以使用cxf组件的一个选项(cxfEndpointConfigurer)来完成,如camel-cxf组件单元测试所示。

在您的情况下,它是这样的:

template.send("cxfrs://" + url + "/match/" + appId + "/" + "reqId?httpClientAPI=true&cxfEndpointConfigurer=#endpointConfigurer"

然后您将需要一个具有如下配置的“EndpointConfigurer”bean:

@Component("endpointConfigurer")
public class TemplateEndpointConfigurer implements CxfEndpointConfigurer {

    @Override
    public void configure(AbstractWSDLBasedEndpointFactory factoryBean) {
        // Do nothing here
    }

    @Override
    public void configureClient(Client client) {

        final HTTPConduit conduit = (HTTPConduit) client.getConduit();

        final HTTPClientPolicy policy = new HTTPClientPolicy();
        policy.setConnectionTimeout(webServiceConnectionTimeout);
        policy.setReceiveTimeout(webServiceReadTimeout);
        policy.setConnection(ConnectionType.CLOSE);
        conduit.setClient(policy);

    }

    @Override
    public void configureServer(Server server) {
        // Do nothing here
    }
}
 类似资料:
  • 问题内容: 我已经使用JAXWS-RI 2.1为基于WSDL的Web服务创建了一个接口。我可以与Web服务进行交互,没有问题,但是无法指定将请求发送到Web服务的超时时间。如果由于某种原因它没有响应,则客户似乎永远旋转它的轮子。 到处搜寻表明我可能应该尝试执行以下操作: 我还发现,根据您拥有的JAXWS-RI版本,您可能需要设置以下属性: 我的问题是,无论以上哪一项是正确的,我都不知道 在哪里 可

  • 在我做了插座之后。多房间聊天应用程序的IO服务器如何使用https://github.com/socketio/socket.io-client-java ? 我搜索了很多,在socket的客户端还没有找到最新的例子。对于android,大多数教程和示例都是针对带有节点的服务器端的。js。

  • 自定义成菜单 说明: 1)启用该功能后,直播客户端可以通过自定义菜单的方式加载用户自定义的网页,方便结合自身业务进行交互操作(客户端5.0.0以上版本支持) 问卷设置 说明: 1)在直播管理页面点击 “问卷设置”,启用该功能后,直播客户端可以通过接口请求的方式将用户问卷库中的问卷导入到客户端中使用 2)关于问卷设置的具体功能及使用方法,请参考:问卷接口开发指南 菜单设置 说明: 1)支持对客户端的

  • 问题内容: 我编写了简单的REST Web服务客户端类,该类使用JAX-RS 2.0客户端API发出REST请求。我试图弄清楚如何为每个调用设置请求超时。这是请求的代码: 问题答案: 为此,您可以先创建一个ClientConfig,然后在创建新客户端时将其作为参数提供。

  • 由于我需要使用一些旧服务器,并且由于已从Java8中删除,因此我需要重新启用一些基于RC4的密码。如发行说明中所述,我们必须使用。由于我使用的是Apache HTTP客户端,因此无法找到执行此操作的方法。提前感谢!(我还发现了相当多的半挂车问题,但没有答案,所以想发布一个新的)