【发布时间】:2015-06-26 06:33:11
【问题描述】:
我有以下简化的 spring 集成流程:
int-ws:inbound-gateway ----> int:transformer ----> int-kafka:outbound-channel-adapter
基本上:
- 使用
int-ws:inbound-gateway公开 Web 服务端点 - 来自此端点的消息被放到
input频道(第一个--->) - 自定义转换器转换负载 JSON 格式并添加 MESSAGE_KEY 标头(kafka 必需)
- 消息被放置到
inputToKafka频道(第二个--->) -
int-kafka:outbound-channel-adapter将消息推送到 kafka 主题
网络服务操作有一个请求和一个响应负载。
请求有效负载是我要转换为 JSON 消息的内容。
一旦消息由int-kafka:outbound-channel-adapter
我该怎么做?
目前,当我调用 Web 服务时,一切都按预期工作,但我必须在 int-ws:inbound-gateway 上设置一个 reply-timeout 以使其不会挂起。当我这样做时,我只是在 SOAPUI 上得到一个空响应。
我了解 Gateway behavior when no response arrives 部分中的概念 - 但就我而言,我确实想生成回复。
这是我的集成上下文(没有 kafka 代理配置等):
<int-ws:inbound-gateway id="ws-inbound-gateway" request-channel="input"
marshaller="marshaller" unmarshaller="marshaller" reply-timeout="100"/>
<int:channel id="input"/>
<int:transformer input-channel="input" output-channel="inputToKafka" method="transform">
<bean class="com.test.InputToJSONTransformer"/>
</int:transformer>
<int:channel id="inputToKafka"/>
<int-kafka:outbound-channel-adapter kafka-producer-context-ref="kafkaProducerContext"
auto-startup="true"
channel="inputToKafka"
order="1">
</int-kafka:outbound-channel-adapter>
【问题讨论】: