Spring Integration Java DSL HTTP在超时错误内未收到回复

时间:2018-07-20 15:00:50

标签: java spring-integration spring-integration-dsl spring-integration-http

我正在使用Spring集成5.0.6。我仔细阅读了它的文档,并创建了以下代码,这些代码在HTTP端点上进行侦听并发布到kafka主题。

一切正常,我也收到有关该主题的消息。但是,在HTTP客户端上,没有发送答复,而是给出“超时后未收到答复”。

如何通过以下代码将回复发送回http呼叫者:

mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您使用单向Kafka.outboundChannelAdapter(producerFactory)的问题。这仅用于“发送和忘记”。

如果您有兴趣进行后续处理,或者需要回复HTTP请求,则应考虑使用:

/**
 * The {@link org.springframework.integration.channel.PublishSubscribeChannel} {@link #channel}
 * method specific implementation to allow the use of the 'subflow' subscriber capability.
 * @param publishSubscribeChannelConfigurer the {@link Consumer} to specify
 * {@link PublishSubscribeSpec} options including 'subflow' definition.
 * @return the current {@link IntegrationFlowDefinition}.
 */
public B publishSubscribeChannel(Consumer<PublishSubscribeSpec> publishSubscribeChannelConfigurer) {

在流定义中,您的第一个订阅者实际上是Kafka.outboundChannelAdapter(producerFactory),而第二个订阅者可能是提到的.enrichHeaders()。如果您什么也不做,那么最后一个将把结果发送到replyChannel头中,因此将到达HTTP响应。

在这种发布-订阅方案中,请记住第二个订阅者的payload与您尝试发送给Kafka的相同。