嵌入式linux下使用kafka,带Spring Boot的简单嵌入式Kafka测试示例

小编典典

嵌入式Kafka测试适用于以下配置,

测试课注释

@EnableKafka

@SpringBootTest(classes = {KafkaController.class}) // Specify @KafkaListener class if its not the same class, or not loaded with test config

@EmbeddedKafka(

partitions = 1,

controlledShutdown = false,

brokerProperties = {

"listeners=PLAINTEXT://localhost:3333",

"port=3333"

})

public class KafkaConsumerTest {

@Autowired

KafkaEmbedded kafkaEmbeded;

@Autowired

KafkaListenerEndpointRegistry kafkaListenerEndpointRegistry;

注释之前的设置方法

@Before

public void setUp() throws Exception {

for (MessageListenerContainer messageListenerContainer : kafkaListenerEndpointRegistry.getListenerContainers()) {

ContainerTestUtils.waitForAssignment(messageListenerContainer,

kafkaEmbeded.getPartitionsPerTopic());

}

}

注意:我不是@ClassRule用来创建嵌入式Kafka而是自动装配

@Autowired embeddedKafka

@Test

public void testReceive() throws Exception {

kafkaTemplate.send(topic, data);

}

希望这可以帮助!

编辑:测试配置类标记为 @TestConfiguration

@TestConfiguration

public class TestConfig {

@Bean

public ProducerFactory producerFactory() {

return new DefaultKafkaProducerFactory<>(KafkaTestUtils.producerProps(kafkaEmbedded));

}

@Bean

public KafkaTemplate kafkaTemplate() {

KafkaTemplate kafkaTemplate = new KafkaTemplate<>(producerFactory());

kafkaTemplate.setDefaultTopic(topic);

return kafkaTemplate;

}

现在@Test方法将自动连接KafkaTemplate并用于发送消息

kafkaTemplate.send(topic, data);

用上面的行更新了答案代码块

2020-05-30

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值