如何为 Camel component/endpoint 编写 Camel Quarkus 扩展?

How to write a Camel Quarkus extension for a Camel component/endpoint?

我有自己的骆驼component/endpoint,我在的许多路线中成功使用Spring 启动应用程序。 我正在尝试迁移到 camel quarkus 并在我的应用程序中使用相同的 routes

不可能在我的 camel-quarkus 应用程序 中使用这个 component/endpoint 只需添加相关的依赖项:quarkus 无法像 Spring Boot 一样发现此 component/endpoint

显而易见的解决方案是编写一个 quarkus 扩展,在后台使用这个 camel-componentquarkus extensions like jdbc, file, sql and so on are implemented using the corresponding camel-components.

如果我们看一下 pom-xml of sql of its runtime module, we find that it's using the equivalent camel-sql component:

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-sql</artifactId>
</dependency>

我的问题是 quarkus 仍然没有发现 component/endpoint 即使按项目构建(我正在使用 eclipse),quarkus 显示它已经安装了我的扩展。 我在互联网上搜索了很长时间,但没有找到任何有用的资源。

使用此依赖项。所有以 group id 开头的 quarkus dependecies 是 org.apache.camel.quarkus 和 artifact camel-quarkus-xxx

<dependency>
  <groupId>org.apache.camel.quarkus</groupId>
  <artifactId>camel-quarkus-sql</artifactId>
</dependency>

对于 postgresql

<dependency>
  <groupId>io.quarkus</groupId>
  <artifactId>quarkus-jdbc-postgresql</artifactId>
</dependency>

显而易见的解决方案是不写额外的扩展。 当且仅当:

时,Quarkus 运行时才会发现模块或第三方依赖项中的 类
  1. 第三方依赖在宿主项目中被索引: 通过将以下条目添加到 .properties 文件:

quarkus.index-dependency..group-id=
quarkus.index-dependency..artifact-id=

.yaml文件:

quarkus:  
   index-dependency:
     <name>:
        group-id: <group-id>
        artifact-id: <artifact-id> 

其中 是第三方的。

  1. jandex-maven-plugin 存在于此模块或第三方依赖项的 pom.xml
  2. 下面有一个空的 beans.xml src/main/resorces/META-INF 这个 module/dependency

我在这个 .

中找到了我的问题的答案