0

嗨,我想基于 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。

但是当我尝试执行平衡时,由于某种原因,请求没有被传递到同一个后端服务器。

我的环境、 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");

我在这里做错了吗?如果是这样呢?我将不胜感激任何帮助。

4

1 回答 1

0

也在邮件列表中讨论 http://camel.465427.n5.nabble.com/Performing-Sticky-load-balancing-in-Camel-tp5719170.html

请不要同时在多个地方开始同一个话题。如果你这样做,那么至少告诉我们,这样我们就会知道这一点。

当人们花时间帮助你时,当它已经在另一个地方得到回答时,他们会感到不安!

于 2012-09-12T15:32:51.613 回答