Я хочу подключиться к двум разным каналам TCP, зашифрованным TLS, и одновременно читать и отправлять json данные. Входящие, которые будут, конечно, как-то обработаны. Это не обязательно должно быть обработано в Spring-интеграции, но может быть помещено в очередь или что-то еще.
Я не хочу жестко кодировать хост и порты, потому что я получаю их во время выполнения от REST API, который Я звоню.
То, что я отправляю, не обязательно будет генерировать ответ, и я не обязательно ожидаю ответа от данных, которые я отправляю.
У меня возникли проблемы с реализацией это с весны интеграции. Мне удалось получить что-то вроде этого, но не совсем работающее, выполнив:
public static IntegrationFlow RegisterFeedFlow(final IntegrationFlowContext flowContext,
final String id, final String host, final int port) {
IntegrationFlow feedFlow = f -> f
.handle(Tcp
.outboundGateway(Tcp.netClient(host, port).serializer(TcpCodecs.crlf())
.deserializer(TcpCodecs.lengthHeader1()))
.remoteTimeout(m -> 5000))
.transform(Transformers.objectToString()).handle(System.out::println);
flowContext.registration(feedFlow).id(id).register();
return feedFlow;
}
Чего здесь не хватает:
- TLS.
- Потому что я используя Tcp.outboundGateway (), он всегда ожидает ответа для данных, которые я отправляю. Я не хочу этого.
Я предполагаю, что я мог бы автоматически кодировать и декодировать json, помещая что-то в .serializer () и .deserializer (). Правильно ли это предположение?
Как бы это правильно реализовать?