In spring Документация -> 32.6 TCP-адаптеры упоминается, что мы используем clientMode = "true", тогда входящий адаптер отвечает за соединение с внешним сервером.
У меня естьсоздал поток, в котором TCP-адаптер с клиентской фабрикой соединений устанавливает соединение с внешним сервером, код для потока:
IntegrationFlow flow = IntegrationFlows.from(Tcp.inboundAdapter(Tcp.nioClient(hostConnection.getIpAddress(),Integer.parseInt(hostConnection.getPort()))
.serializer(customSerializer)
.deserializer(customSerializer)
.id(hostConnection.getConnectionNumber())).clientMode(true).retryInterval(1000).errorChannel("testChannel").id(hostConnection.getConnectionNumber()+"adapter"))
.enrichHeaders(f->f.header("CustomerCode",hostConnection.getConnectionNumber()))
.channel(directChannel())
.handle(Jms.outboundAdapter(ConnectionFactory())
.destination(hostConnection.getConnectionNumber()))
.get();
theFlow = this.flowContext.registration(flow).id(hostConnection.getConnectionNumber()+"outflow").register();
- Я создал несколько потоков, перебирая список соединений и перебираяприведенный выше код для цикла for и зарегистрируйте их в flowcontext с уникальным идентификатором.
My clients are created successfully with no issue and then establish there connection as supported by topology
.
Issue :
Я посчитал количество успешно созданных клиентских подключений, поэтому подсчитал, что 7 клиентских подключений (7 потоков интеграции) были успешно установлены, и они инициируют подключение от себя.
, когда ясоздать 8-е клиентское соединение (8-й поток создан и успешно зарегистрирован), но .clientMode(true)
не работает, значит клиент не инициирует само соединениепосле первого сбоя означает, что в первый раз попытаться установить соединение при успешном подключении, то нет проблем, но в случае сбоя он не повторяется снова.
Также мои другие созданные клиенты, т.е. 7клиентские подключения, которые были успешно созданы, также прекратили инициировать подключение от себя, когда они были отключены.
Примечание : нет проблем с потоком, только для TCP-адаптеров, которые они останавливаютИнициирование соединения
- Поток создан и зарегистрирован успешно, так как нет проблем, потому что когда я запускаю команду шины управления
@adapter_id.retryConnection()
, он соединяется с сервером.
Я не понимаю, в чем проблема с моим потоком, что я не мог инициировать соединение после определенного количества, т.е. семи или есть ограничение в создании числа клиентов.