为了账号安全,请及时绑定邮箱和手机立即绑定

如何测试是否正在调用带有@KafkaListener 的方法

如何测试是否正在调用带有@KafkaListener 的方法

慕森卡 2022-12-28 10:00:00
我真的很难编写一个测试来检查当消息发送到它的指定主题时我的 Kafka 消费者是否被正确调用。我的消费者:@Service@Slf4j@AllArgsConstructor(onConstructor = @__(@Autowired))public class ProcessingConsumer {  private AppService appService;  @KafkaListener(      topics = "${topic}",      containerFactory = "processingConsumerContainerFactory")  public void listen(ConsumerRecord<Key, Value> message, Acknowledgment ack) {    try {      appService.processMessage(message);      ack.acknowledge();    } catch (Throwable t) {      log.error("error while processing message!", t);    }  }}我的消费者配置:@EnableKafka@Configurationpublic class ProcessingCosumerConfig {  @Value("${spring.kafka.schema-registry-url}")  private String schemaRegistryUrl;  private KafkaProperties props;  public ProcessingCosumerConfig(KafkaProperties kafkaProperties) {    this.props = kafkaProperties;  }  public Map<String, Object> deserializerConfigs() {    Map<String, Object> props = new HashMap<>();    props.put(KafkaAvroDeserializerConfig.SPECIFIC_AVRO_READER_CONFIG, true);    props.put(KafkaAvroDeserializerConfig.SCHEMA_REGISTRY_URL_CONFIG, schemaRegistryUrl);    return props;  }  private KafkaAvroDeserializer getKafkaAvroDeserializer(Boolean isKey) {    KafkaAvroDeserializer kafkaAvroDeserializer = new KafkaAvroDeserializer();    kafkaAvroDeserializer.configure(deserializerConfigs(), isKey);    return kafkaAvroDeserializer;  }  private DefaultKafkaConsumerFactory consumerFactory() {    return new DefaultKafkaConsumerFactory<>(        props.buildConsumerProperties(),        getKafkaAvroDeserializer(true),        getKafkaAvroDeserializer(false));  }
查看完整描述

1 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

将模拟 AppService 注入侦听器并验证其 processMessage() 已被调用。



查看完整回答
反对 回复 2022-12-28
  • 1 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号