Spring boot Cron表达与spring-kafkaTemplate兼容性
我在spring boot中使用cron表达式安排了一个作业。 当我添加maven spring kafka依赖项时,我的工作不会启动。这是my pom.xml中的依赖项:Spring boot Cron表达与spring-kafkaTemplate兼容性,spring-boot,cron,spring-kafka,Spring Boot,Cron,Spring Kafka,我在spring boot中使用cron表达式安排了一个作业。 当我添加maven spring kafka依赖项时,我的工作不会启动。这是my pom.xml中的依赖项: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>t
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
org.springframework.boot
弹簧起动试验
测试
在我的课堂上,我使用以下注释:
@Configuration
@EnableScheduling
@ConditionalOnProperty(prefix = "pushItems", name = "run", havingValue = "Y")
public class JobPushItems {
@Autowired
KafkaTemplate<String, String> template;
@Scheduled(cron = "${cron.expression.pushItems}")
@Transactional()
public void startExecutor() {
... spring code
}
@配置
@使能调度
@条件属性(prefix=“pushItems”,name=“run”,havingValue=“Y”)
公共类项目{
@自动连线
卡夫卡模板;
@已计划(cron=“${cron.expression.pushItems}”)
@事务性()
公共无效startExecutor(){
…弹簧代码
}
当我从pom.xml中删除spring kafka依赖项(以及kafkaTemplate autowired)时,作业可以正常启动。有什么问题吗?您显示的依赖项与spring kafka无关 将完整的项目发布到某个地方(例如GitHub) 这对我来说很好
@springboot应用程序
@使能调度
@启用事务管理
公共类SO64098861应用程序{
公共静态void main(字符串[]args){
SpringApplication.run(So64098861Application.class,args);
}
@自动连线
私有卡夫卡模板;
@计划(固定利率=5000)
@交易的
公共无效附表(){
System.out.println(“此处”);
这个.template.send(“topic1”、“foo”);
此.template.send(“主题1”、“栏”);
}
@豆子
公共新话题(){
返回TopicBuilder.name(“topic1”).partitions(1).replications(1.build();
}
}
谢谢你的回答,但我用这种方式解决了我的问题。我删除了@Scheduled()下的注释@Transactional(),并调用了一个私有方法:
@Scheduled(cron = "${cron.expression.pushItems}")
public void startExecutor() {
startExecutorPrivate()
}
@Transactional()
private void startExecutorPrivate() {
... spring code
}
@Scheduled(cron = "${cron.expression.pushItems}")
public void startExecutor() {
startExecutorPrivate()
}
@Transactional()
private void startExecutorPrivate() {
... spring code
}