Spring boot Cron表达与spring-kafkaTemplate兼容性

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

我在spring boot中使用cron表达式安排了一个作业。 当我添加maven spring kafka依赖项时,我的工作不会启动。这是my pom.xml中的依赖项:

<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
}