【问题标题】:Failover Integration Testing of Kafka/Spring IntegrationKafka/Spring集成的故障转移集成测试
【发布时间】:2018-03-29 09:00:32
【问题描述】:

我正在研究 两个 场景,在 Spring 与 Kafka 的集成之上工作:

  1. Happy path - 通道正确流动并将其有效负载成功传递到出站通道
  2. 另一种情况 - 通道正确流动,但出站通道关闭

我的计划是在KafkaTemplate 上使用AOP,当它被任何发送方法调用时会引发异常。然后将其返回到错误通道

我想知道还有哪些其他(更简单且不显眼!)测试技术可用于处理不可用的出站通道?

加分适用于 ApplicationContext(即 XML)解决方案,而不是基于注释!

【问题讨论】:

    标签: java spring apache-kafka spring-integration


    【解决方案1】:
    1. 如果sync 为真,您只会在调用线程上获得异常;否则异步失败可能会被发送到错误通道(从 2.3/3.0 开始)。

    2. Adding Behavior to Endpoints;特别是ExpressionEvaluatingRequestHandlerAdvice

    编辑

    您还可以在通道适配器的上游添加一个中流网关。

    <int:gateway service-interface=OneWay error-channel="ec"
        default-request-channel="toKafka" />
    
    public interface OneWay {
    
        void sendIt(Message<?> message);
    
    }
    

    ec 将获得带有MessagingException 有效负载的ErrorMessage,该负载具有failedMessagecause 属性。

    【讨论】:

    • 谢谢 Gary - 我已将 sync 设置为 true,所以不用担心。我希望有一个与 AOP 不同的 解决方案。也许某些东西融入了 Spring Integration/Kafka?
    • ExpressionEvaluatingRequestHandlerAdvice 通过 &lt;request-handler-advice/&gt; 子元素嵌入到 Spring Integration 中;它确实使用 AOP,但可以完成您需要的一切。另一种方法是在通道适配器的上游添加一个中间流网关(请参阅我的编辑)。
    猜你喜欢
    • 2012-08-21
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    相关资源
    最近更新 更多