Apache camel 如何使用ApacheCamel“;直接;在夸克斯骆驼
我已将io.quarkus:quarkus camel core添加到我的应用程序中,但直接启动在本机映像中不起作用。如果我在JVM中运行quarkus,那么它可以工作 Github()中的一些项目以某种方式表明将来计划进行扩展,但它没有得到官方支持 如何使其以最小的工作量运行,例如仅为direct创建自己的扩展项目。如果我将现有项目添加到Maven pom中,我会遇到不同Maven坐标的问题,最终本地构建告诉我存在重复的项目 在quarkus中,用什么好的方法从驼峰运行生成“直接”语句 顺便说一句,本机构建可以工作,即我得到一个可执行文件,但直接语句的注入不起作用: “org.apache.camel.ResolveEndpointFailedException:未能解析 终点:direct://init 原因:未找到具有以下方案的组件: 直接的” 资料来源: 休息端点:Apache camel 如何使用ApacheCamel“;直接;在夸克斯骆驼,apache-camel,quarkus,Apache Camel,Quarkus,我已将io.quarkus:quarkus camel core添加到我的应用程序中,但直接启动在本机映像中不起作用。如果我在JVM中运行quarkus,那么它可以工作 Github()中的一些项目以某种方式表明将来计划进行扩展,但它没有得到官方支持 如何使其以最小的工作量运行,例如仅为direct创建自己的扩展项目。如果我将现有项目添加到Maven pom中,我会遇到不同Maven坐标的问题,最终本地构建告诉我存在重复的项目 在quarkus中,用什么好的方法从驼峰运行生成“直接”语句 顺便说
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
ExchangeBuilder exchangeBuilder = new ExchangeBuilder(context);
Exchange out = template.send("direct:init", exchangeBuilder.build());
return out.getOut().toString();
}
CamelRouteBuilder:
public class CamelSyncRouteBuilder extends RouteBuilder {
static final String HTTP_ROUTE_ID = "http:camel";
static long[] times = new long[1];
@Override
public void configure() throws Exception {
from("direct:init").routeId(HTTP_ROUTE_ID)
.setHeader(MyOrderService.class.getName(), MyOrderService::new)
.setHeader(Filler.class.getName(), Filler::new).process(fill(Filler.class.getName(), "fill"))
.split(body().tokenize("@"), CamelSyncRouteBuilder.this::aggregate)
.process(stateless(MyOrderService.class.getName(), "handleOrder")).end().to("log:foo?level=OFF");
}
pom.xml:
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sap.it.graal</groupId>
<artifactId>getting-started</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<surefire-plugin.version>2.22.0</surefire-plugin.version>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<quarkus.version>0.19.1</quarkus.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-bom</artifactId>
<version>${quarkus.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-camel-core</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus.version}</version>
<executions>
<execution>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire-plugin.version}</version>
<configuration>
<systemProperties>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>native</id>
<activation>
<property>
<name>native</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus.version}</version>
<executions>
<execution>
<goals>
<goal>native-image</goal>
</goals>
<configuration>
<enableHttpUrlHandler>true</enableHttpUrlHandler>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${surefire-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<systemProperties>
<native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
</systemProperties>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
4.0.0
com.sap.it.graal
开始
1.0-快照
2.22.0
1.8
1.8
0.19.1
UTF-8
UTF-8
夸克斯
夸克斯物料清单
${quarkus.version}
聚甲醛
进口
夸克斯
夸克斯轻松
夸克斯
quarkus-junit5
测试
放心吧
放心
测试
夸克斯
夸克骆驼核
夸克斯
quarkus maven插件
${quarkus.version}
建造
maven surefire插件
${surefire plugin.version}
org.jboss.logmanager.logmanager
本地的
本地的
夸克斯
quarkus maven插件
${quarkus.version}
本地映像
真的
maven故障保护插件
${surefire plugin.version}
集成测试
验证
${project.build.directory}/${project.build.finalName}-runner
即使没有专用扩展,direct
组件也应该开箱即用,例如,它用于创建jdbc组件的集成测试()
你能分享更多关于你的项目和设置的信息吗?我也面临同样的问题,因为我没有了解骆驼是如何工作的。正如日志中所说,您没有提供“直接”URI的组件。因此,您必须添加该组件。有一个例子:
org.apache.camel.quarkus
骆驼夸克斯直接
编码在post-itself中共享,问题是它在通常的JVM模式下工作,但在创建本机映像后,会出现错误消息。正如您已经指出的,本机映像生成似乎无法计算direct语句的扩展名。能否共享整个pom?pom.xml已添加到初始post中。它是由Maven模板生成的(在那之后我一直在玩,希望我没有改变一个重要的设置),因此我创建了一个带有直接端点的更简单的示例,它看起来像预期的那样工作,请参见:
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-direct</artifactId>
</dependency>