Apache Camel 和InfluxDB 2.x

cclgggtu  于 2022-12-04  发布在  Apache
关注(0)|答案(3)|浏览(181)

到目前为止,我使用Apache Camel(JAVA)将数据从Apache Kafka代理路由到InfluxDB 1.8。现在,我将数据库升级到InfluxDB 2.5。
两个InfluxDB版本在读/写API方面不兼容。例如,无法注入阅读/写所需的安全令牌。
InfluxDB 1.8需要依赖项

<groupId>org.influxdb</groupId>
<artifactId>influxdb-java</artifactId>
<version>XXX</version>

InfluxDB 2.5要求

<groupId>com.influxdb</groupId>
<artifactId>influxdb-client-java</artifactId>
<version>YYY</version>

在Apache Camel中提供了一个InfluxDB组件:

<groupId>org.apache.camel</groupId>
<artifactId>camel-influxdb</artifactId>
<version>ZZZ</version>

它依赖于influx-client库。这是否意味着不再有InfluxDB 2.x组件?那么我如何构建InfluxDB 2.5端点?

e0bqpujr

e0bqpujr1#

不幸的是,influxdb v2仅在influxdb-client-java中得到完全支持。但是根据文档,您可以使用InfluxDB 1.x compatibility API继续使用influxdb-java lib处理influxdb 2.X。

ccgok5k5

ccgok5k52#

最后,我构建了一个自定义的Camel组件,为InfluxDB 2x提供本地支持。
为那些想做类似事情的人提供一条路线:
使用POM创建一个Maven项目,如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<!-- NOTE: I would like to get rid of this camel parent and replace it with our own. didn manage yet -->
<parent>
    <groupId>org.apache.camel</groupId>
    <artifactId>components</artifactId>
    <version>3.19.0</version>
</parent>

<groupId>my.group.name</groupId>
<artifactId>my-component-name</artifactId>
<version>3.19.0</version>
<packaging>jar</packaging>
<name>Camel :: InfluxDBClient</name>
<description>A Camel Component</description>
<url>...</url>

<dependencies>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-support</artifactId>
    </dependency>

    <!-- InfluxDB driver dependency -->
    <dependency>
        <groupId>com.influxdb</groupId>
        <artifactId>influxdb-client-java</artifactId>
        <version>${version.influx-java-driver}</version>
        <exclusions>
           <exclusion>
               <groupId>com.squareup.okhttp3</groupId>
               <artifactId>logging-interceptor</artifactId>
           </exclusion>
        </exclusions>
    </dependency>

    <!-- test dependencies -->
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-test-junit5</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
       <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <scope>test</scope>
    </dependency>
    ...

在Camel组件项目中创建以下方法(全部基于原始camel-influxdb),其中前缀Influx2Db可以替换为您喜欢的内容:

  • Camel 流入DbException
  • Influx 2DbComponent(将InfluxDB替换为InfluxDBClient(2.x)并调整代码)
  • 流入2Db常数
  • 流入2Db终点
  • 流入2Db操作
  • Influx 2DbProducer(将InfluxDB替换为InfluxDBClient(2.x)并调整代码)

在以下位置创建名为<last part of your package name>的文件:

  • src/main/resources/META-INF/service/<package name minus last part>/<last part of your package name>

内容:

class=<package name>.Influx2DbComponent

此外,在Apache Camel应用程序中,您需要在基于spring-boot-autoconfigure:influxdb的spring查找路径中使用Spring-Boot-Autoconfigure类(如果您使用Spring-Boot):

  • Influx 2Db自动配置
  • Influx 2Db定制器(函数接口)
  • Influx 2DbOkHttpClient构建器提供程序(功能接口)
  • 流入2Db属性
vpfxa7rd

vpfxa7rd3#

最后,我在一个单独的Maven项目中构建了一个自定义的Camel组件,为InfluxDB 2x提供本地支持。
为那些想做类似事情的人提供一条路线:
使用POM创建一个Maven项目,如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<!-- NOTE: I would like to get rid of this camel parent and replace it with our own. didn manage yet -->
<parent>
    <groupId>org.apache.camel</groupId>
    <artifactId>components</artifactId>
    <version>3.19.0</version>
</parent>

<groupId>my.group.name</groupId>
<artifactId>my-component-name</artifactId>
<version>3.19.0</version>
<packaging>jar</packaging>
<name>Camel :: InfluxDBClient</name>
<description>A Camel Component</description>
<url>...</url>

<dependencies>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-support</artifactId>
    </dependency>

    <!-- InfluxDB driver dependency -->
    <dependency>
        <groupId>com.influxdb</groupId>
        <artifactId>influxdb-client-java</artifactId>
        <version>${version.influx-java-driver}</version>
        <exclusions>
           <exclusion>
               <groupId>com.squareup.okhttp3</groupId>
               <artifactId>logging-interceptor</artifactId>
           </exclusion>
        </exclusions>
    </dependency>

    <!-- test dependencies -->
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-test-junit5</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
       <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <scope>test</scope>
    </dependency>
    ...

在Camel组件项目中创建以下方法(全部基于原始camel-influxdb),其中前缀Influx2Db可以替换为您喜欢的内容:

  • Camel 流入DbException
  • Influx 2DbComponent(将InfluxDB替换为InfluxDBClient(2.x)并调整代码)
  • 流入2Db常数
  • 流入2Db终点
  • 流入2Db操作
  • Influx 2DbProducer(将InfluxDB替换为InfluxDBClient(2.x)并调整代码)

在以下位置创建名为<last part of your package name>的文件:

  • src/main/resources/META-INF/service/<package name minus last part>/<last part of your package name>

内容:

class=<package name>.Influx2DbComponent

此外,在Apache Camel应用程序中,您需要在基于spring-boot-autoconfigure:influxdb的spring查找路径中使用Spring-Boot-Autoconfigure类(如果您使用Spring-Boot):

  • Influx 2Db自动配置
  • Influx 2Db定制器(函数接口)
  • Influx 2DbOkHttpClient构建器提供程序(功能接口)
  • 流入2Db属性

相关问题