【问题标题】:Use @Gateway with Spring-Integration-Kafka将 @Gateway 与 Spring-Integration-Kafka 一起使用
【发布时间】:2018-08-28 14:35:58
【问题描述】:

使用 Spring-Integration-Kafka 是否还能使用@MessagingGateway 和@Gateway。

我当前的代码如下所示:

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

关于我的 Spring 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  

【问题讨论】:

    标签: java spring apache-kafka spring-integration


    【解决方案1】:

    您似乎没有显示完整的配置。

    网关期待回复,但kafkaMessageHandler 没有回复(除非模板是ReplyingKafkaTemplate)并且将丢失replyChannel 标头。

    所以,大概,您正试图从其他地方发送回复。

    如果您期待请求/回复语义;使用new outbound gateway

    模板必须是ReplyingKafkaTemplate

    【讨论】:

    • 感谢@Gary 这解决了我的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多