Каков предпочтительный способ указания преобразователя для ответа исходящего шлюза с использованием 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 ответ
Решение
Вам просто нужно добавить .transform(...)
после этого .handle(Tcp.outboundGateway(...))
в потоке.
Ну, вы можете использовать один и тот же класс как для запроса, так и для ответа, но я считаю, что в случае ответа вам нужно создать объект ISO из byte[]
поэтому вам необходимо указать имя метода в качестве второго .transform()
аргумент, чтобы прояснить ситуацию для целевой конечной точки преобразования.