使用 DSL 为传出网关的响应指定转换器的首选方法是什么
What is the preferred way of specifying a transformer for the response of an outgoing gateway using 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()
}
此代码正确地将作为对象的请求转换为字节[],以便发送到远程服务器
我的问题如下:
- 转换服务器响应的首选方式是什么?
- 是否可以对两个转换使用一个 class?
Artem 回答
执行自定义协议的正确方法是使用自定义 serializer/deserializer.
您只需在流程中 .handle(Tcp.outboundGateway(...))
之后添加一个 .transform(...)
。
好吧,你可以对请求和响应使用相同的 class,但我相信在响应的情况下你需要从 byte[]
创建一个 ISO 对象,因此你需要将方法名称指定为第二个 .transform()
参数,以明确目标转换端点。
我有如下一段代码:
@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()
}
此代码正确地将作为对象的请求转换为字节[],以便发送到远程服务器
我的问题如下:
- 转换服务器响应的首选方式是什么?
- 是否可以对两个转换使用一个 class?
Artem 回答 执行自定义协议的正确方法是使用自定义 serializer/deserializer.
您只需在流程中 .handle(Tcp.outboundGateway(...))
之后添加一个 .transform(...)
。
好吧,你可以对请求和响应使用相同的 class,但我相信在响应的情况下你需要从 byte[]
创建一个 ISO 对象,因此你需要将方法名称指定为第二个 .transform()
参数,以明确目标转换端点。