繁体   English   中英

骆驼 kafka 主题中的 spring-cloud-contract-verifier 清理消息

[英]spring-cloud-contract-verifier cleanup messages in camel kafka topics

在合约测试期间,我运行 main FLOW ,它将 2 个事件生成到不同的 kafka 主题( TOPIC_1TOPIC_2 )。 我有两个不同的测试来检查此事件的发送( TOPIC_1 TEST_1TEST_2TOPIC_2 )。 所以TEST_1TEST_2运行相同的FLOW ,对于TEST_1我有将事件发送到TOPIC_2TEST_2 - TOPIC_1 TEST_2 考虑示例,我先运行TEST_1 ,然后运行TEST_2 期间TEST_2我将有内部2级的事件TOPIC_2 -一个通过产生TEST_1和所产生的第二TEST_2 当然,我的TEST_2会失败,因为在验证过程中它假设接收由他自己生成的消息,没有别的。

所以,这就是为什么我需要在每次测试之前跳过所有主题中的所有旧消息。 如何使用org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierMessaging

我找到了一个解决方案,我在 CamelContext 中轮询来自每个端点的所有消息

@Autowired
private org.apache.camel.CamelContext camelContext;

@org.junit.Before
public void cleanUpCamelEndpoints() {
    for (Endpoint endpoint : camelContext.getEndpoints()) {
        try {
            PollingConsumer pollingConsumer = endpoint.createPollingConsumer();
            Exchange exchangeToSkip;
            while ((exchangeToSkip = pollingConsumer.receiveNoWait()) != null) {
                log.debug("Skipped side effect exchange: {}", exchangeToSkip);
            }
        } catch (Exception exception) {
            log.debug("Exception while receive exchange to skip: " + exception);
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM