我试图通过Apache Camel和Netty在多个后端服务器上加载平衡TCP连接。
我想将后端的每个连接映射到Camel的每个连接。像这样:
我的协议是有状态的,客户端和Camel之间的连接将保持打开状态。我还需要从后端开始并转到客户端的消息。
到目前为止,这么好。这工作得很好。 当我连接到同一个后端服务器的新客户端时,我的问题就出现了,看起来Camel重用已经打开的连接,对于后端服务器,它看起来像第一个客户端发送了消息,它没有收到一个新的连接请求。
我查看了Apache Camel Netty组件文档,但没有找到任何配置此行为的内容。
是否可以这样做?
Sidenote :我使用Camel,因为我需要检查协议中的消息以选择后端服务器,即我需要自定义负载均衡策略。使用Camel提供的任何负载均衡策略会出现问题,因此它与我的代码无关。
答案 0 :(得分:0)
Camel有一个sticky loadbalancer,你只需要设置一个表达式来告诉camel决定它需要使用哪个对象哈希码。
from("direct:start").loadBalance().
sticky(header("source")).to("mock:x", "mock:y", "mock:z");