1
我使用自定義負載平衡器使用負載平衡器時,我可以知道哪個端點最終成爲目標嗎?
from("timer://myTimer?period=2000")
.loadBalance(new MyCustomLoadBalancer())
.to("mock:em1").to("mock:em2").to("mock:em3")
.end();
在自定義均衡器類的路線,似乎只有處理器可以得到。
public class MyCustomLoadBalancer extends SimpleLoadBalancerSupport {
public void process(Exchange exchange) throws Exception {
List<Processor> pList = getProcessors();
.......
//It is wanted to log which endpoint is finally targeted.
foo.process(exchange);
}
}
但是在這裏,我想實際記錄使用此負載平衡器時的目標端點。
在產品環境中,將使用Jetty或HTTP端點來代替這些模擬端點。
有沒有辦法實現這一點?
============================================== =====================
根據易卜生的建議,我使用Jetty端點進行測試。
from("jetty:http://0.0.0.0:8043?matchOnUriPrefix=true")
.loadBalance(new MyCustomLoadBalancer())
.to("jetty:http://localhost:80?bridgeEndpoint=true&throwExceptionOnFailure=false")
.to("jetty:http://www.google.com?bridgeEndpoint=true&throwExceptionOnFailure=false")
.end();
但處理器不類SendProcessor的(「富的instanceof SendProcessor」返回false),所以我不能getDestination得到端點。
我相信端點和處理器之間應該有一些關係。
你能給我更多幫助嗎?
謝謝。
感謝您的快速回復。 我想在真正的Jetty端點上做一些測試。 – paeps
嗨易卜生, 這可能讓所有包含端點實例在負載平衡器?我認爲負載均衡器實例就像一個容器。 另外,是否有可能獲得端點實例使用的相應處理器實例? 如果這些工作,問題也可以解決。 – paeps
與Jetty端點關聯的處理器不是SendProcessor的實例;我未能通過您建議的方法獲取端點。 我希望負載平衡器記錄每個端點的狀態。所以用戶可以很容易地知道哪個服務存在問題。 – paeps