当前位置: 首页 > 知识库问答 >
问题:

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

狄安歌
2023-03-14

我有一个自己的骆驼组件/endpoint,我在Spring Boot应用程序中成功地在许多路线中使用。我正试图迁移到骆驼夸克斯,并在我的应用程序中使用相同的路线。

在我的camel quarkus应用程序中,仅通过添加相关依赖项是不可能使用此组件/endpoint的:quarkus无法像Spring Boot那样发现此组件/endpoint。

显而易见的解决方案是编写一个在后台使用这个camel组件的quarkus扩展:像jdbc、文件、sql等quarkus扩展是使用相应的camel组件实现的。

如果我们查看一下其运行时模块中sql的pom xml,就会发现它使用的是等效的camel sql组件:

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

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

共有2个答案

湛光华
2023-03-14

显而易见的解决方案是不编写额外的扩展。Quarkus运行时发现模块或第三方依赖项中的类,当且仅当:

  1. 第三方依赖项在host项目中被索引:通过将以下条目添加到。属性文件:

夸克斯。索引依赖项。。组id=

或yaml文件:

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

哪里

  1. jandex-maven-plugin存在于此模块或第三方依赖项的pom.xml中
  2. 此模块/依赖项的src/main/Resort ces/META-INF下存在一个空beans.xml

我在这篇文章中找到了我问题的答案。

戴霖
2023-03-14

使用此选项。所有quarkus依赖项都以组id开头,即org。阿帕奇。骆驼夸克斯和神器骆驼夸克斯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>
 类似资料:
  • 我知道在香草ES6中,您可以编写一个,它扩展了一个函数类。这里解释了这一点。 React支持两个ES6类组件,通过扩展React。组件和功能组件。但是,当尝试扩展功能组件时,我遇到了以下错误。 我正在尝试编写一些扩展组件的代码,这些代码同时适用于ES6类组件和功能组件。我想写一个函数,返回一个组件,但不是一个高阶组件,我只想扩展和修改一些道具。 下面是一些我尝试过但不起作用的示例代码。这可能吗?我

  • 升级到Apache Camel 2.21.1后,我的应用程序无法启动。具体来说,升级到camel-aws会导致应用程序在启动时抛出此错误: 创建名为“incomingEndpoint”的bean时出错:FactoryBean在创建对象时引发异常;嵌套的例外是java。lang.NoClassDefFoundError:org/apache/camel/component/extension/Com

  • 我在Camel中有一个长时间运行的进程,它是由HTTP请求触发的。我想将状态更新写入Outputstream,但在客户端没有得到响应。 我尝试使用以下方法: 骆驼-路线: 处理器测试: 以及呼叫代码: 但我只有在处理器中设置主体(注释行)时才得到响应。有没有办法保持camel中的连接并继续向其写入?

  • 我正在尝试使用Apache Camel 3endpointDSL。这是我目前的代码。它工作正常。这是一个测试,所以非常简单。它从目录中读取并记录文件内容。 但是当我试图更改组件的名称时。例如,final String componentName=“myCustomFileComponent”; 我在控制台中遇到以下错误 从这里,我了解到我可以为示例中的endpointmyWMQ和myAMQ提供自定

  • 我们正在使用Camel MQTT组件订阅几个主题并执行路由逻辑。 在某些情况下,我们使用动态endpoint在运行时设置发布主题名称,该名称最多可用于15个并发连接的endpoint。 一旦创建第16个动态endpoint(toD()-call),连接到mqtt代理时就会出现超时。 如果Mqtt组件的并发连接endpoint是在运行时创建的,那么这些endpoint是否有限制? 静态endpoin