3

我是骆驼的新手,最终陷入了代理问题。我有这样一条路线,用于存储从经常性 http 调用到文件的结果:

from("quartz://collector/test?cron=0+0/2+*+?+*+*")                      
    .setHeader(Exchange.HTTP_METHOD, constant("GET"))    
    .setHeader(Exchange.HTTP_QUERY, constant("Id=50")
.to("http://www.anywebsite/question.php")
    .setHeader(Exchange.FILE_NAME,constant("${date:now:yyyyMMddHHmmssSSS}.xml"))
.inOnly(someFolder);

我的问题是我需要指定一个代理(主机+端口)才能通过,否则我会被困在试图获取信息的过程中。我尝试了各种方法,包括从 routeBuilder(通过 getContext().setProperties)和包装在“properties/property”标签中的 bundle-context.xml 设置“http.proxyHost”和“http.proxyPort”。我也试图通过添加它来在端点中设置它(camel-http文档说你可以将它设置为 httpenpoint)&proxyHost=myHost&proxyPort=myPort

没有工作..

我还尝试从我通过谷歌阅读的帖子中设置一个 http-conduit,例如(根据部署目标选择一个或另一个):

<http-conf:conduit name="*.http-conduit">
<!-- when behind proxy -->
        <http-conf:client Connection="close" ConnectionTimeout="3000" ReceiveTimeout="10000" ProxyServer="p-goodwat" ProxyServerPort="3128"/> 
<!-- when no proxy -->
    <http-conf:client Connection="close" ConnectionTimeout="3000" ReceiveTimeout="10000" />
</http-conf:conduit>

但这也不起作用......而且,我希望能够自动执行此操作,而无需根据安装位置更新骆驼上下文。

那么,您是否看到了一种设置它并动态设置它的方法?

4

4 回答 4

5

经过几次尝试,我设法让它工作......看起来问题不是来自我的解决方案,而是因为我没有增加捆绑版本......因此,我的解决方案没有被考虑在内。

因此,对我有用的解决方案是从我的 routeBuilder 设置上下文的端点,例如: getContext().setProperty("http.proxyHost",10.100.100.1);
getContext().setProperty("http.proxyPort",2111);

现在,它确实有效。

谢谢看过的人!

于 2013-07-12T21:36:05.467 回答
1

使用 XML 配置:

<camelContext id="context" xmlns="http://camel.apache.org/schema/spring">
    <properties>
        <property key="http.proxyHost" value="127.0.0.1"/>
        <property key="http.proxyPort" value="8888"/>
   </properties>
</camelContext>
于 2017-10-27T20:21:25.640 回答
0

我认为这次 http-conduit 设置对您不起作用,因为您不使用任何 CXF 客户端来调用该服务。

于 2013-07-16T08:15:20.947 回答
0

尽管马文回答了他自己的问题,但他的回答已经过时了。

至少对于较新的 Camel 版本,解决方案更改为:

 context.getGlobalOptions().put("http.proxyHost", "172.168.18.9");
 context.getGlobalOptions().put("http.proxyPort", "8080");

您可以通过getContext()在扩展 RouteBuilder 时使用来获取上下文。

来源:在https://camel.apache.org/components/3.15.x/http-component.html#_configuring_a_proxy找到的 Camel 文档

于 2022-02-16T17:09:35.180 回答