[英]How to implement sticky session in spring-integration tcp gateway?
我目前正在使用 spring 集成開發 tcp 套接字服務器。 到目前為止,我有下面提到的代碼。 但是有可能對這個套接字服務器的多個節點進行負載平衡。 為此,我需要有可以在節點之間共享的套接字連接上下文的粘貼會話。 任何人都可以提出可能的解決方案嗎?
@Bean
public IntegrationFlow listnerServerFlow(
TcpNetServerConnectionFactory serverConnectionFactory,
DeviceListenerService deviceListenerService) {
return IntegrationFlows
.from(Tcp.inboundGateway(serverConnectionFactory))
.handle(deviceListenerService::processRequest)
.get();
}
@Bean
public TcpNetServerConnectionFactory serverConnectionFactory() {
TcpNetServerConnectionFactory connectionFactory = new TcpNetServerConnectionFactory(2424);
connectionFactory.setSerializer(new ByteArrayCrLfSerializer());
connectionFactory.setDeserializer(new ByteArrayCrLfSerializer());
connectionFactory.setSingleUse(false);
connectionFactory.setSoKeepAlive(true);
return connectionFactory;
}
在常見情況下,您可以在請求中添加唯一標識符,並將 session 數據存儲在單獨的 Redis 中。
無論哪個節點正在處理請求,節點都可以根據請求中的標識符從 Redis 中檢索 session 數據。
希望這可以幫助您找到解決方案。
有了這個設置
connectionFactory.setSingleUse(false);
只有一個共享連接,因此它始終具有粘性(對一台服務器)。
您可以使用ThreadAffinityConnectionFactory將連接綁定到每個調用線程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.