[英]How to set proxy while using camel-http
我是駱駝的新手,最終陷入了代理問題。 我有這樣一條路線,用於存儲對文件的循環 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);
我的問題是我需要通過 go 指定代理(主機 + 端口),否則我將無法獲取信息。 我嘗試了各種方法,包括從 routeBuilder(通過 getContext().setProperties)和包裹在“properties/property”標簽中的 bundle-context.xml 設置“http.proxyHost”和“http.proxyPort”。我也試圖通過添加&proxyHost=myHost&proxyPort=myPort
來在端點中設置它( camel-http文檔說你可以將它設置為 httpenpoint)。
沒有工作..
我還嘗試從我通過谷歌閱讀的帖子中設置一個 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>
但這也沒有用……而且,我希望能夠自動完成,而不必根據安裝位置更新駱駝上下文。
那么,您是否看到一種設置它並動態設置它的方法?
經過幾次嘗試,我設法讓它工作......看起來問題不是來自我的解決方案,而是因為我沒有增加捆綁版本...因此,我的解決方案沒有被考慮。
因此,對我有用的解決方案是從我的routeBuilder設置上下文的端點,例如:getContext()。setProperty(“http.proxyHost”,10.100.100.1);
的getContext()的setProperty( “把http.proxyPort”,2111)。
現在,它確實有效。
謝謝那些看過的人!
我不認為這次http-conduit設置對您有用,因為您不使用任何CXF客戶端來調用該服務。
使用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>
雖然馬文回答了他自己的問題,但他的回答已經過時了。
至少對於更新的 Camel 版本,解決方案更改為:
context.getGlobalOptions().put("http.proxyHost", "172.168.18.9");
context.getGlobalOptions().put("http.proxyPort", "8080");
您可以在擴展 RouteBuilder 時使用getContext()
來獲取上下文。
資料來源:Camel 文檔位於https://camel.apache.org/components/3.15.x/http-component.html#_configuring_a_proxy
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.