Spring Boot Quartz组件未在Sping Boot 应用程序上调用camel处理器

sqserrrh  于 2024-01-06  发布在  Spring
关注(0)|答案(1)|浏览(164)

我已经创建了简单的JBossFUSESpring Boot 应用程序与以下依赖关系

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>sample.fuse</groupId>
  6. <artifactId>sample-FUSE</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>war</packaging>
  9. <name>springboot-camel-restdsl-api</name>
  10. <description>Camel SpringBoot REST API Example with REST DSL</description>
  11. <parent>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-parent</artifactId>
  14. <version>1.5.9.RELEASE</version>
  15. <relativePath /> <!-- lookup parent from repository -->
  16. </parent>
  17. <properties>
  18. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  19. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  20. <java.version>1.8</java.version>
  21. <start-class>sample.fuse.UrarepSpringBootApplication</start-class>
  22. </properties>
  23. <dependencies>
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter-web</artifactId>
  27. <exclusions>
  28. <exclusion>
  29. <groupId>org.apache.tomcat.embed</groupId>
  30. <artifactId>tomcat-embed-websocket</artifactId>
  31. </exclusion>
  32. </exclusions>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.springframework.boot</groupId>
  36. <artifactId>spring-boot-starter-data-jpa</artifactId>
  37. </dependency>
  38. <dependency>
  39. <groupId>org.apache.camel</groupId>
  40. <artifactId>camel-spring-boot-starter</artifactId>
  41. <version>2.19.0</version>
  42. </dependency>
  43. <dependency>
  44. <groupId>org.apache.camel</groupId>
  45. <artifactId>camel-servlet-starter</artifactId>
  46. <version>2.19.0</version>
  47. </dependency>
  48. <dependency>
  49. <groupId>org.apache.camel</groupId>
  50. <artifactId>camel-jackson</artifactId>
  51. <version>2.19.0</version>
  52. </dependency>
  53. <dependency>
  54. <groupId>javax</groupId>
  55. <artifactId>javaee-api</artifactId>
  56. <version>7.0</version>
  57. </dependency>
  58. <dependency>
  59. <groupId>com.fasterxml.jackson.core</groupId>
  60. <artifactId>jackson-databind</artifactId>
  61. </dependency>
  62. <dependency>
  63. <groupId>com.ibm.mq</groupId>
  64. <artifactId>mq-jms-spring-boot-starter</artifactId>
  65. <version>2.3.2</version>
  66. </dependency>
  67. <dependency>
  68. <groupId>com.ibm.mq</groupId>
  69. <artifactId>com.ibm.mq.allclient</artifactId>
  70. <version>9.2.0.0</version>
  71. </dependency>
  72. <dependency>
  73. <groupId>org.springframework.boot</groupId>
  74. <artifactId>spring-boot-starter-artemis</artifactId>
  75. </dependency>
  76. <dependency>
  77. <groupId>org.apache.camel</groupId>
  78. <artifactId>camel-quartz</artifactId>
  79. <version>2.13.0</version>
  80. </dependency>
  81. </dependencies>
  82. <build>
  83. <plugins>
  84. <plugin>
  85. <groupId>org.springframework.boot</groupId>
  86. <artifactId>spring-boot-maven-plugin</artifactId>
  87. </plugin>
  88. </plugins>
  89. </build>
  90. </project>

字符串
然后我创建了简单的RouteBuilder,内容如下

  1. package sample.fuse.routebuilder;
  2. import com.fasterxml.jackson.core.JsonProcessingException;
  3. import org.apache.camel.Exchange;
  4. import org.apache.camel.LoggingLevel;
  5. import org.apache.camel.builder.RouteBuilder;
  6. import org.apache.camel.model.rest.RestBindingMode;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Component;
  11. import sample.fuse.process.*;
  12. import javax.ws.rs.core.MediaType;
  13. @Component
  14. public class MyRouteBuilder extends RouteBuilder {
  15. static Logger LOG = LoggerFactory.getLogger(MyRouteBuilder.class);
  16. @Autowired
  17. TestProcessor testProcessor;
  18. @Override
  19. public void configure() throws Exception {
  20. from("quartz://seasonParkingProcessorCron?cron=10+*+*+*+*+?&trigger.timeZone=America/Chicago&job.name=seasonParkingProcessorCron")
  21. .log(LoggingLevel.INFO, "seasonParkingProcessorCron job kicked off")
  22. .process(testProcessor);
  23. }
  24. }


样品处理器有以下内容。

  1. package sample.fuse.process;
  2. import org.apache.camel.Exchange;
  3. import org.apache.camel.Processor;
  4. import org.slf4j.Logger;
  5. import org.slf4j.LoggerFactory;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.core.env.Environment;
  8. import org.springframework.stereotype.Component;
  9. import org.springframework.stereotype.Service;
  10. import sample.fuse.repository.MevEhtVideoImagesRepository;
  11. import java.util.Calendar;
  12. @Service
  13. @Component
  14. public class TestProcessor implements Processor {
  15. static Logger LOG = LoggerFactory.getLogger(TestProcessor.class);
  16. @Autowired
  17. Environment environment;
  18. @Autowired
  19. private MevEhtVideoImagesRepository mevEhtVideoImagesRepository;
  20. public TestProcessor(){
  21. }
  22. @Override
  23. public void process(Exchange exchange) throws Exception {
  24. String body= (String) exchange.getIn().getBody();
  25. LOG.info("TestProcessor Called with exchange: " + body);
  26. System.out.println("AAAAAAAAAAAAAa");
  27. exchange.getOut().setBody(body+" "+ Calendar.getInstance().getTime());
  28. }
  29. }


我希望每10秒调用一次我的处理器方法并打印日志。然而,它在日志上给出了以下错误。
11:58:10,013 WARN [org.apache.camel.component.quartz.QuartzEndpoint](DefaultQuartzOperator-camel-1_Worker-1)Cannot execute Quartz Job with context:JobExecutionContext:trigger:'Camel.seasonParkingProcessorCron job:DEFAULT.seasonParkingProcessorCron fireTime:'Thu Dec 21 11:58:10 SGT 2023 scheduledFireTime:Thu Dec 21 11:58:10 SGT 2023 previousFireTime:'null nextFireTime:Thu Dec 21 11:59:10 SGT 2023 isRecovering:false refireCount:0 because processor is not started:RoundRobinLoadBalancer
有没有人犯过这种错误?

cotxawn7

cotxawn71#

您必须使用相同版本的camel-core版本的camel-quartz。但是在您的pom文件中camel-core和camel-quartz版本应该匹配。pom文件中的camel-quartz依赖项应该更新如下

  1. <dependency>
  2. <groupId>org.apache.camel</groupId>
  3. <artifactId>camel-quartz</artifactId>
  4. <version>2.19.0</version>
  5. </dependency>

字符串
然后你的MyRouteBuilder类配置方法内容需要改变如下。

  1. from("quartz://seasonParkingProcessorCron?cron=10+*+*+*+*+?")
  2. .log(LoggingLevel.INFO, "seasonParkingProcessorCron job kicked off")
  3. .process(testProcessor);


希望这将有助于解决您的问题。

展开查看全部

相关问题