我正在使用带有+------------------------+
|mycol |
+------------------------+
|12 PHTEXTURL PHTEXTEMAIL|
|12 PHTEXTURL PHTEXTEMAIL|
|12 PHTEXTURL PHTEXTEMAIL|
|12 PHTEXTURL PHTEXTEMAIL|
+------------------------+
批注的Spring Kafka启动嵌入式kafka实例。
依赖性:
@EmbeddedKafka
我已经配置了我的应用程序以连接到它:
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka-test</artifactId>
<scope>test</scope>
</dependency>
我成功发送了消息并使用了消息。
我的问题是消息保留在某处,并可能出现在进行的测试运行中。日志正在打印这些:
spring:
kafka:
bootstrap-servers: ${spring.embedded.kafka.brokers}
高代号表示Kafka正在保留我不希望的两次测试重试之间的信息。
如何彻底清理嵌入式Kafka并重新开始?
编辑:
我遇到的问题是我没有正确使用Spring Profiles。我的嵌入式Kafka配置中有一个自定义注释注释。问题是我在复合注释中设置了Successfully joined group with generation 117
,并且在实际测试类中也设置了@ActiveProfiles("kafka")
。我已经将复合注释更新为:
@ActiveProfiles("dev")
答案 0 :(得分:1)
您需要在两次测试之间使用@DirtiesContext
来清理应用程序上下文。嵌入式卡夫卡经纪人也将被销毁。
如果问题出在一个测试类方法之间,那么您需要重新考虑那里的逻辑,以免干扰不同方法中的相同主题。
您也可以考虑使用@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
,但这将导致某种程度的性能下降,因为将在每种测试方法之前重新创建应用程序上下文和嵌入式Kafka。
更新
请尝试以下建议,而不要进行application.properties
修改:
static {
System.setProperty(EmbeddedKafkaBroker.BROKER_LIST_PROPERTY,
"spring.kafka.bootstrap-servers");
}