有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何为死信卡夫卡创建测试

在我的小微服务中,我创建了一个制作人Kafka,以这种方式发送死信中有错误的消息(JSON格式的消息有错误):

@Component
public class KafkaProducer {
    @Autowired
    private KafkaTemplate<String, String> kafkaTemplate;
    public void sendDeadLetter(String message) {
        kafkaTemplate.send("DeadLetter", message);
    }
}

为了项目的完整性,我想创建一个JUnitTest,但是我不知道如何创建可能的JSON错误以创建测试。我感谢所有可能的帮助和建议


共 (2) 个答案

  1. # 1 楼答案

    创建与代码一致的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
     }
    

    我希望它对你有用