我是骆驼的新手,最后还是陷入了代理问题。 我有一个这样的路由,用于存储从一个recurrent http调用到文件的resulat:
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 doc说明你可以将其设置为httpenpoint)中设置它,方法是向其添加&proxyHost=myHost&proxyPort=myPort
。
没有工作..
Il还尝试从我通过谷歌阅读的帖子中设置一个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>
但这也不起作用......而且,我希望能够自动完成,而不必根据安装位置更新camel-context。
那么,你有没有办法设置它,并动态设置它?
答案 0 :(得分:3)
经过几次尝试后,我设法让它工作了...看起来问题不是来自我的解决方案,而是因为我没有增加捆绑版本...因此,我的解决方案没有采取考虑到。
所以,对我有用的解决方案是从我的routeBuilder设置上下文的端点,如:
的getContext()的setProperty( “http.proxyHost”,10.100.100.1);
的getContext()的setProperty( “把http.proxyPort”,2111);
现在,它确实有效。
感谢那些看过的人!
答案 1 :(得分:0)
我不认为这次http-conduit设置对您有用,因为您不使用任何CXF客户端来调用该服务。
答案 2 :(得分:0)
使用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>