[英]spring-cloud-contract-verifier cleanup messages in camel kafka topics
在合约测试期间,我运行 main FLOW
,它将 2 个事件生成到不同的 kafka 主题( TOPIC_1
和TOPIC_2
)。 我有两个不同的测试来检查此事件的发送( TOPIC_1
TEST_1
和TEST_2
的TOPIC_2
)。 所以TEST_1
和TEST_2
运行相同的FLOW
,对于TEST_1
我有将事件发送到TOPIC_2
和TEST_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.