Apache camel 如何使用ApacheCamel“;直接;在夸克斯骆驼

Apache camel 如何使用ApacheCamel“;直接;在夸克斯骆驼,apache-camel,quarkus,Apache Camel,Quarkus,我已将io.quarkus:quarkus camel core添加到我的应用程序中,但直接启动在本机映像中不起作用。如果我在JVM中运行quarkus,那么它可以工作 Github()中的一些项目以某种方式表明将来计划进行扩展,但它没有得到官方支持 如何使其以最小的工作量运行,例如仅为direct创建自己的扩展项目。如果我将现有项目添加到Maven pom中,我会遇到不同Maven坐标的问题,最终本地构建告诉我存在重复的项目 在quarkus中,用什么好的方法从驼峰运行生成“直接”语句 顺便说

我已将io.quarkus:quarkus camel core添加到我的应用程序中,但直接启动在本机映像中不起作用。如果我在JVM中运行quarkus,那么它可以工作

Github()中的一些项目以某种方式表明将来计划进行扩展,但它没有得到官方支持

如何使其以最小的工作量运行,例如仅为direct创建自己的扩展项目。如果我将现有项目添加到Maven pom中,我会遇到不同Maven坐标的问题,最终本地构建告诉我存在重复的项目

在quarkus中,用什么好的方法从驼峰运行生成“直接”语句

顺便说一句,本机构建可以工作,即我得到一个可执行文件,但直接语句的注入不起作用:

“org.apache.camel.ResolveEndpointFailedException:未能解析 终点:direct://init 原因:未找到具有以下方案的组件: 直接的”

资料来源: 休息端点:

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