Каков предпочтительный способ указания преобразователя для ответа исходящего шлюза с использованием DSL

У меня есть следующий кусок кода:

@Configuration
@EnableConfigurationProperties(ISOGatewayProperties::class)
class ISOGatewayConfig {

    @Bean
    fun isoGatewayFlow(
        isoProps: ISOGatewayProperties,
        isoTransformer: ISOTransformer) : IntegrationFlow =
            IntegrationFlows
                .from(MessageChannels.direct("isoInChannel"))
                .log()
                .transform(isoTransformer)
                .handle(Tcp.outboundGateway(
                    Tcp.netClient(isoProps.host, isoProps.port)))
                .get()
}

Этот код правильно преобразует запрос, являющийся объектом, в байт [] для отправки на удаленный сервер.

Мои вопросы следующие:

  1. Каков предпочтительный способ преобразования ответа от сервера?
  2. Можно ли использовать один класс для обоих преобразований?

Ответ Артема Правильный способ создания пользовательских протоколов - использование собственного сериализатора / десериализатора.

1 ответ

Решение

Вам просто нужно добавить .transform(...) после этого .handle(Tcp.outboundGateway(...)) в потоке.

Ну, вы можете использовать один и тот же класс как для запроса, так и для ответа, но я считаю, что в случае ответа вам нужно создать объект ISO из byte[]поэтому вам необходимо указать имя метода в качестве второго .transform() аргумент, чтобы прояснить ситуацию для целевой конечной точки преобразования.

Другие вопросы по тегам