由于骆驼上下文引起的错误,我无法运行我的程序,我应该怎么做才能解决这个问题?



我在这里要做的是通过camel apache创建一个缩放会议。每当我运行程序时,我总是得到错误,导致错误的行是当我启动骆驼上下文c.start()时下面是我运行的代码:

package com.example.demo;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import org.apache.camel.*;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.model.dataformat.JsonLibrary;
import static org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.json;
public class Test {
private String token = "sample token";
public static void main(String[] args) throws Exception {
CamelContext c = new DefaultCamelContext();
settings set = new settings(true, true, false,
false, true,"voip","cloud");
recurrence rec = new recurrence(1,1);
c.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:start")
.process(exchange -> exchange.getIn().setBody(new ZoomSetting(
"Testing zoom api",
2,
"2022-05-09T14: 00: 00",
45,
"America/New_York",
"testing",
rec,
set
)))
.marshal().json(JsonLibrary.Gson)
.setHeader(Exchange.HTTP_METHOD, constant("POST"))
.setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
.setHeader("Authorization", simple("Bearer"+ token))
.to("https://api.zoom.us/v2/users/me/meetings")
.process(exchange -> log.info("The response code is: {}", exchange.getIn().getHeader(Exchange.HTTP_RESPONSE_CODE)));
}
});
c.start();
}
}

我试图在pom.xml文件中包含依赖项,但这并没有真正起作用。以下是我在pom.xml中包含的依赖项:

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot-starter</artifactId>
<version>3.16.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.camel/camel-http-starter -->
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-http-starter</artifactId>
<version>3.0.0-RC3</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.19.2</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-rest</artifactId>
<version>3.16.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-gson</artifactId>
<version>3.16.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-direct</artifactId>
<version>3.16.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-http</artifactId>
<version>3.16.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>3.16.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-context</artifactId>
<version>2.25.4</version>
</dependency>


</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

我一直得到的错误是:

线程"main"java.lang.AbstractMethodError:接收类org.apache.camel.management.JmxManagementLifecycleStrategy没有定义或继承解决方法的实现抽象onRouteContextCreate(long/apache/camel/Route;)生命周期策略。org.apache.camel.reifier.RouteReifier.doCreateRoute (RouteReifier.java: 213)org.apache.camel.reifier.RouteReifier.createRoute (RouteReifier.java: 74)在org.apache.camel.impl.DefaultModelReifierFactory.createRoute (DefaultModelReifierFactory.java: 49)org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions (DefaultCamelContext.java: 887)org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions (DefaultCamelContext.java: 775)org.apache.camel.impl.engine.AbstractCamelContext.doInit (AbstractCamelContext.java: 2937)org.apache.camel.support.service.BaseService.init (BaseService.java: 83)org.apache.camel.impl.engine.AbstractCamelContext.init (AbstractCamelContext.java: 2620)org.apache.camel.support.service.BaseService.start (BaseService.java: 111)org.apache.camel.impl.engine.AbstractCamelContext.start (AbstractCamelContext.java: 2639)org.apache.camel.impl.DefaultCamelContext.start (DefaultCamelContext.java: 255)com.example.demo.Test.main (Test.java: 42)

如果你想使用main方法运行camel,你应该使用camel-main它用于运行独立的驼峰应用程序。你要做的是将camel作为独立应用程序运行,但使用camel-spring-boot依赖项。

您可以使用maven原型camel- prototype -main生成新的独立驼峰应用程序项目,并将其作为如何设置项目的参考。

mvn archetype:generate -DarchetypeGroupId="org.apache.camel.archetypes" -DarchetypeArtifactId="camel-archetype-main" -DarchetypeVersion="3.14.3"

如果你想使用spring-frameworkspring-boot要跑骆驼,可以使用camel- prototype -spring-boot原型,用于生成示例驼峰弹簧靴项目。我建议在使用camel之前先熟悉Spring-framework和Spring-boot的基础知识,以避免不必要的混淆。

mvn archetype:generate -DarchetypeGroupId="org.apache.camel.archetypes" -DarchetypeArtifactId="camel-archetype-spring-boot" -DarchetypeVersion="3.14.3"
  • Camel - Archetypes
  • Camel - main
  • 骆驼-弹簧靴

最新更新