使用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
1条答案
按热度按时间blmhpbnm1#
您似乎没有显示完整的配置。
网关正在等待答复,但是
kafkaMessageHandler
不生成回复(除非模板是ReplyingKafkaTemplate
)将失去replyChannel
标题。所以,想必你是想从别的地方回复。
如果您期望请求/应答语义;使用新的出站网关。
模板必须是
ReplyingKafkaTemplate
.