我已经创建了简单的JBossFUSESpring Boot 应用程序与以下依赖关系
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>sample.fuse</groupId>
<artifactId>sample-FUSE</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>springboot-camel-restdsl-api</name>
<description>Camel SpringBoot REST API Example with REST DSL</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<start-class>sample.fuse.UrarepSpringBootApplication</start-class>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring-boot-starter</artifactId>
<version>2.19.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-servlet-starter</artifactId>
<version>2.19.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jackson</artifactId>
<version>2.19.0</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.ibm.mq</groupId>
<artifactId>mq-jms-spring-boot-starter</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>com.ibm.mq</groupId>
<artifactId>com.ibm.mq.allclient</artifactId>
<version>9.2.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-artemis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-quartz</artifactId>
<version>2.13.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
字符串
然后我创建了简单的RouteBuilder,内容如下
package sample.fuse.routebuilder;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.apache.camel.Exchange;
import org.apache.camel.LoggingLevel;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.model.rest.RestBindingMode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import sample.fuse.process.*;
import javax.ws.rs.core.MediaType;
@Component
public class MyRouteBuilder extends RouteBuilder {
static Logger LOG = LoggerFactory.getLogger(MyRouteBuilder.class);
@Autowired
TestProcessor testProcessor;
@Override
public void configure() throws Exception {
from("quartz://seasonParkingProcessorCron?cron=10+*+*+*+*+?&trigger.timeZone=America/Chicago&job.name=seasonParkingProcessorCron")
.log(LoggingLevel.INFO, "seasonParkingProcessorCron job kicked off")
.process(testProcessor);
}
}
型
样品处理器有以下内容。
package sample.fuse.process;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import sample.fuse.repository.MevEhtVideoImagesRepository;
import java.util.Calendar;
@Service
@Component
public class TestProcessor implements Processor {
static Logger LOG = LoggerFactory.getLogger(TestProcessor.class);
@Autowired
Environment environment;
@Autowired
private MevEhtVideoImagesRepository mevEhtVideoImagesRepository;
public TestProcessor(){
}
@Override
public void process(Exchange exchange) throws Exception {
String body= (String) exchange.getIn().getBody();
LOG.info("TestProcessor Called with exchange: " + body);
System.out.println("AAAAAAAAAAAAAa");
exchange.getOut().setBody(body+" "+ Calendar.getInstance().getTime());
}
}
型
我希望每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
有没有人犯过这种错误?
1条答案
按热度按时间cotxawn71#
您必须使用相同版本的camel-core版本的camel-quartz。但是在您的pom文件中camel-core和camel-quartz版本应该匹配。pom文件中的camel-quartz依赖项应该更新如下
字符串
然后你的MyRouteBuilder类配置方法内容需要改变如下。
型
希望这将有助于解决您的问题。