我正在使用Spring集成5.0.6。我仔细阅读了它的文档,并创建了以下代码,这些代码在HTTP端点上进行侦听并发布到kafka主题。
一切正常,我也收到有关该主题的消息。但是,在HTTP客户端上,没有发送答复,而是给出“超时后未收到答复”。
如何通过以下代码将回复发送回http呼叫者:
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
感谢您的帮助。
答案 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的相同。