您好我想在基于SOAP会话的apache camel中执行粘性负载平衡,它嵌入在第一个响应的ServiceGroupID节点中。
我写了一条小路,如下:
from(uri)
.loadBalance().sticky(xpath(query).namespaces(env).namespaces(wsa).namespaces(ax))
.to(BE1,BE2);
其中URI是传递请求的字符串,BE1和BE2是两个后端服务器。
我的查询是
String query = "/soapenv:Envelope/soapenv:Header/wsa:ReplyTo/wsa:ReferenceParameters/axis2:ServiceGroupId/text()";
如果我没错,这个查询会从我的SOAP头中提取servicegroupID。
但是当我尝试执行平衡时,由于某种原因,requets不会被传递到同一个后端服务器。
和我的env,wsa和ax是命名空间,它们是:
Namespaces env = new Namespaces("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
Namespaces wsa = new Namespaces("wsa", "http://www.w3.org/2005/08/addressing");
Namespaces ax = new Namespaces("axis2", "http://ws.apache.org/namespaces/axis2");
我在这里做错了吗? 如果是这样的话?我将不胜感激任何帮助。
答案 0 :(得分:0)
还在邮件列表中讨论 http://camel.465427.n5.nabble.com/Performing-Sticky-load-balancing-in-Camel-tp5719170.html
请不要同时在多个地方开始相同的主题。如果你这样做,那么至少告诉我们,所以我们会知道这一点。
人们在花时间帮助你时会感到不安,当它已经在另一个地方得到回答时!