Я использую:
- весна-интеграция-ява-DSL-1.2.3.RELEASE
- весна-интегрально-ф-4.3.19.RELEASE
- весна-интеграция-клиент-4.3.19.RELEASE
Я хочу знать, в чем разница между этими двумя реализациями TcpNetClientConnectionFactory и TcpNioClientConnectionFactory.
Я создал приложение для подключения к серверу, и мое приложение должно поддерживать высокий объем транзакций в секунду, может быть, 100 транзакций в секунду.
Я не знаю, правильна ли моя реализация для поддержки больших объемов или нет.
Обычно для реализации NIO рекомендуется избегать блокировок, но я не знаю, изменит ли она тип реализации, улучшенной моим приложением.
public IntegrationFlow createTcpConnection(String connectionId, String host, int port, int headBytes,
int retryInterval)
{
LOGGER.debug("createTcpConnection -> connectionId: {} - host: {} - port: {} - headBytes: {} - retryInterval: {}"
,connectionId,host,port,headBytes,retryInterval);
IntegrationFlow ifr = existsConnection(connectionId);
if (ifr == null) {
TcpNetClientConnectionFactory cf = new TcpNetClientConnectionFactory(host, port);
final ByteArrayLengthHeaderSerializer by = new ByteArrayLengthHeaderSerializer(headBytes);
cf.setSingleUse(false);
cf.setSoKeepAlive(true);
cf.setSerializer(by);
cf.setDeserializer(by);
cf.setComponentName(connectionId);
//Inbound Adapter
TcpReceivingChannelAdapter adapter = new TcpReceivingChannelAdapter();
adapter.setConnectionFactory(cf);
adapter.setClientMode(true);
adapter.setErrorChannelName("errorChannel");
adapter.setRetryInterval(retryInterval);
ifr = IntegrationFlows
.from(adapter)
.enrichHeaders(h -> h.header("connectionId",connectionId))
.channel(fromTcp)
.handle("BridgeMessageEndpoint", "outbound")
.get();
this.flowContext.registration(ifr).id(connectionId+CONNECTION_SUFFIX + ".in").addBean(cf).register();
//OutBound Adapter
TcpSendingMessageHandler sender = new TcpSendingMessageHandler();
sender.setConnectionFactory(cf);
IntegrationFlow flow = f -> f.handle(sender);
this.flowContext.registration(flow).id(connectionId+CONNECTION_SUFFIX + ".out").register();
LOGGER.debug("createTcpConnection: Connection created");
}
return ifr;
}