我是camel的新手,最后遇到了一个代理问题。我有这样一条路径,用来存储对文件的循环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)设置"http.proxyHost“和""http.proxyPort”“,以及从包装在”routeBuilder/property“标记中的bundle-context.xml中设置。我还尝试在端点( camel-http文档中说可以将其设置为httpenpoint)中设置它,方法是将&proxyHost=myHost&proxyPort=myPort添加到端点。
都不起作用..
Il还尝试从我通过google阅读的帖子中建立一个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。
那么,你有没有办法设置它,并动态地设置它呢?
发布于 2013-07-13 05:36:05
经过几次尝试,我终于成功了。看起来问题不是来自我的解决方案,而是我没有增加捆绑包版本的事实……因此,我的解决方案没有被考虑在内。
因此,对我有效的解决方案是为我的routeBuilder中的上下文设置端点,比如: getContext().setProperty("http.proxyHost",10.100.100.1);
getContext().setProperty("http.proxyPort",2111);现在,它确实起作用了。
感谢那些看过的人!
发布于 2017-10-28 04:21:26
使用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>发布于 2013-07-16 16:15:21
我认为http-conduit设置这次不适用于您,因为您没有使用任何CXF客户端来调用服务。
https://stackoverflow.com/questions/17599165
复制相似问题