使用@gateway与spring集成kafka

yqyhoc1h  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(570)

使用spring集成kafka,我们仍然可以使用@messaginggateway和@gateway。
我当前的代码如下所示:

@MessagingGateway
public interface OrderGateway {
 @Gateway(requestChannel = "requestChannel", replyChannel = "replyChannel",headers = {@GatewayHeader(name = "kafka_topic", value ="requestTopic"))
  Order order(Item item)
}

在我的spring配置中:

@Bean
@ServiceActivator(inputChannel = "requestChannel")
public MessageHandler kafkaMessageHandler(KafkaTemplate kafkaTemplate) {
    KafkaProducerMessageHandler<String, String> messageHandler = new KafkaProducerMessageHandler<>(kafkaTemplate);
    messageHandler.setMessageKeyExpression(new LiteralExpression("spring-integration-kafka"));
    messageHandler.setTopicExpression(new SpelExpressionParser().parseExpression("headers.kafka_topic"));
    return messageHandler;
}

在这个设置中,我得到了一个错误消息:

by: org.springframework.messaging.core.DestinationResolutionException: no output-channel or replyChannel header available
blmhpbnm

blmhpbnm1#

您似乎没有显示完整的配置。
网关正在等待答复,但是 kafkaMessageHandler 不生成回复(除非模板是 ReplyingKafkaTemplate )将失去 replyChannel 标题。
所以,想必你是想从别的地方回复。
如果您期望请求/应答语义;使用新的出站网关。
模板必须是 ReplyingKafkaTemplate .

相关问题