背景:根据配置信息,动态生成kafkaListener,springboot提供kafkalistener注解只能通过硬编码方式生成,注解提供的topic pattern可以通过匹配方式接入多个符合规则的topic,但是问题在于这样做不能充分利用多线程方式充分利用系统cpu,kafkalistener生成消费者的方式非常方便,考虑这点,还是在kafkaListener基础上进行开发
1、跟踪源码后发现:springboot调用KafkaListenerAnnotationBeanPostProcessor.postProcessAfterInitialization解析kafkalistener注解,生成kafka消费者,所以可以通过动态生成kafkalistener代码,调用些方法生成消费者
2、java动态编译相关时,在eclipse中通过的代码放在linux环境中时,在代码运行到动态编译处理时报错:无法找到相关包,符号无法识别。在编译时,需要在
CompilationTask getTask(Writer out, JavaFileManager fileManager, DiagnosticListener