如何为 DeadLetter Kafka 创建测试
How to create a test for DeadLetter Kafka
在我的小微服务中,我创建了一个生产者 Kafka 以这种方式在 DeadLetter 中发送有错误的消息(JSON 格式的错误消息):
@Component
public class KafkaProducer {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
public void sendDeadLetter(String message) {
kafkaTemplate.send("DeadLetter", message);
}
}
我想为项目的完整性创建一个 JUnitTest,但我不知道如何创建一个可能的 JSON 错误的可能性来创建测试。感谢大家的帮助和建议
您可以使用 testcontainers 创建 Kafka 主题并在此基础上编写测试。
分享一个关于如何使用测试容器的例子https://github.com/0001vrn/testcontainers-example
创建与您的代码一致的 JUnitTest。我应该重新创建你传递给它一个扭曲的或无效的 JSON 的情况。在您的情况下,我会选择配置一个 MockConsumer,从中读取您的代码逻辑将被邀请到死信的任何消息。
为了有一个可用的测试结构,我推荐这样的东西:
@KafkaListener(topics = "yourTopic")
public void listen(String message) {
messages.add(message);
}
测试基本结构可以是
@Test
public void testDeadLetter(){
//Set up a mockConsumer
MockConsumer<String,String> yourMockConsumer = new MockConsumer<String,String> (OffsetResetStrategy.EARLIEST);
yourMockConsumer.subscribe(Collections.singletonList("yourTopic"));
//Sending message on embedded Kafka broker
String error = "ERRORE";
kafkaTemplate.send("yourTopic", error);
//Reading the message may take a second
Thread.sleep(1000);
//Create an Assert that checks you that the message is equal to the error specified above
}
希望对你有用!
在我的小微服务中,我创建了一个生产者 Kafka 以这种方式在 DeadLetter 中发送有错误的消息(JSON 格式的错误消息):
@Component
public class KafkaProducer {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
public void sendDeadLetter(String message) {
kafkaTemplate.send("DeadLetter", message);
}
}
我想为项目的完整性创建一个 JUnitTest,但我不知道如何创建一个可能的 JSON 错误的可能性来创建测试。感谢大家的帮助和建议
您可以使用 testcontainers 创建 Kafka 主题并在此基础上编写测试。
分享一个关于如何使用测试容器的例子https://github.com/0001vrn/testcontainers-example
创建与您的代码一致的 JUnitTest。我应该重新创建你传递给它一个扭曲的或无效的 JSON 的情况。在您的情况下,我会选择配置一个 MockConsumer,从中读取您的代码逻辑将被邀请到死信的任何消息。 为了有一个可用的测试结构,我推荐这样的东西:
@KafkaListener(topics = "yourTopic")
public void listen(String message) {
messages.add(message);
}
测试基本结构可以是
@Test
public void testDeadLetter(){
//Set up a mockConsumer
MockConsumer<String,String> yourMockConsumer = new MockConsumer<String,String> (OffsetResetStrategy.EARLIEST);
yourMockConsumer.subscribe(Collections.singletonList("yourTopic"));
//Sending message on embedded Kafka broker
String error = "ERRORE";
kafkaTemplate.send("yourTopic", error);
//Reading the message may take a second
Thread.sleep(1000);
//Create an Assert that checks you that the message is equal to the error specified above
}
希望对你有用!