Pulsar-io-iotdb Sink 开发步骤

Pulsar IO 模块依赖 Pulsar function,部署及架构参考Apache Pulsar 官方链接:

Deploy Pulsar Functions

编译Pulsar-io-iotdb Sink插件

下载pulsar源码。

git clone https://github.com/apache/pulsar.git

iotdb.tar sink源码解压至pulsar/pulsar-io目录下,在pulsar/pulsar-io/pom.xml文件添加iotdb项,如图所示:

在pulsar目录下 编译iotdb sink。

mvn clean package -pl pulsar-io/iotdb -am -Dmaven.test.skip=true

编译成功后,在pulsar/pulsar-io/iotdb目录下生成target目录,target目录下会有pulsar-io-iotdb-3.0.0.nar插件包。

创建IoTDB容器

# 创建 docker bridge 网络

docker network create --driver=bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 iotdb

dockerfile

#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
version: "3"
services:
  iodb-confignode:
    image: apache/iotdb:1.1.0-confignode
    hostname: iotdb-confignode
    container_name: iotdb-confignode
    environment:
      - cn_internal_address=iotdb-confignode
      - cn_internal_port=10710
      - cn_consensus_port=10720
      - cn_target_config_node_list=iotdb-confignode:10710
    volumes:
        - ./data/confignode:/iotdb/data
        - ./logs/confignode:/iotdb/logs
    networks:
      iotdb:
        ipv4_address: 172.18.0.3

  iotdb-datanode1:
    image: apache/iotdb:1.1.0-datanode
    hostname: iotdb-datanode-1
    container_name: iotdb-datanode-1
    ports:
      - "6667:6667"
    environment:
      - dn_rpc_address=iotdb-datanode-1
      - dn_internal_address=iotdb-datanode-1
      - dn_target_config_node_list=iotdb-confignode:10710
      - dn_rpc_port=6667
      - dn_mpp_data_exchange_port=10740
      - dn_schema_region_consensus_port=10750
      - dn_data_region_consensus_port=10760
    volumes:
      - ./data/datanode1:/iotdb/data/
      - ./logs/datanode1:/iotdb/logs/
    networks:
      iotdb:
        ipv4_address: 172.18.0.6

  iotdb-datanode2:
    image: apache/iotdb:1.1.0-datanode
    hostname: iotdb-datanode-2
    container_name: iotdb-datanode-2
    environment:
      - dn_rpc_address=iotdb-datanode-2
      - dn_internal_address=iotdb-datanode-2
      - dn_target_config_node_list=iotdb-confignode:10710
      - dn_rpc_port=6667
      - dn_mpp_data_exchange_port=10740
      - dn_schema_region_consensus_port=10750
      - dn_data_region_consensus_port=10760
    volumes:
      - ./data/datanode2:/iotdb/data/
      - ./logs/datanode2:/iotdb/logs/
    networks:
      iotdb:
        ipv4_address: 172.18.0.4

networks:
  iotdb:
    external: true

运行

docker-compose up –d

,成功会有拉起三个容器:

运行

docker exec -ti iotdb-datanode-1 /iotdb/sbin/start-cli.sh -h iotdb-datanode-1

进入iotdb容器并连接iotdb数据库

创建Pulsar proxy容器

运行

docker run -d --name proxy -p 6650:6650  -p 8080:8080 --network=iotdb apachepulsar/pulsar-all:latest bin/pulsar standalone

IoTDB sink 测试

  1. cd pulsar目录,使用
    docker cp pulsar-io/iotdb/target/pulsar-io-iotdb-3.0.0.nar proxy:/pulsar/connectors 将生成的pulsar-io-iotdb-3.0.0.nar
    包拷贝至pulsar proxy容器内。
  2. 运行
    docker exec -it proxy /bin/sh 
    进入pulsar proxy 容器内部
  3. 创建主题:
    bin/pulsar-admin topics create persistent://public/default/my-topic

  4. 运行sink:
bin/pulsar-admin sinks localrun \

--archive connectors/pulsar-io-iotdb-3.0.0.nar \

--tenant public \

--namespace default \

--name iotdb-sink \

--sink-config '{"host": "172.18.0.6","port": 6667,"user": "root","password": "root","batchSize": 1,"storageGroup": "root.iotdb1.device1"}' \

--inputs my-topic
  1. 另起一个客户端运行
    docker exec -it proxy /bin/sh
    进入pulsar proxy容器内部
  2. 分别发送两次消息:
bin/pulsar-client produce my-topic -s "\n" -m {"temperature":18,"timestamp":1686021685001}
bin/pulsar-client produce my-topic -s "\n" -m {"temperature":23,"timestamp":1686021685005}

  1. 另起客户端,运行
    docker exec -ti iotdb-datanode-1 /iotdb/sbin/start-cli.sh -h iotdb-datanode-1
    进入iotdb容器并连接iotdb数据库
  2. 运行
    select * from root.iotdb1.device1

可查阅iotdb数据已存在,测试OK.

Pulsar sink 常见命令

Create

创建 sink

Go
$ bin/pulsar-admin sink create <options>

常用参数

  • -a,--archive : 指定 sink NAR
  • --classname : 指定 sink 的类名称
  • -i,--inputs : 指定 sink topic,多个 topic 用逗号隔开
  • --name : 指定 sink 的名称
  • --namespace : 指定 sink 的命名空间
  • --parallelism : 指定 sink 的并发数
  • --sink-config-file : 指定 sink yaml 配置文件
  • --tenant : 指定 sink 的租户

Update

更新 sink

Go
$ bin/pulsar-admin sink update <options>

常用参数

  • -a,--archive : 指定 sink NAR
  • --classname : 指定 sink 的类名称
  • -i,--inputs : 指定 sink topic,多个 topic 用逗号隔开
  • --name : 指定 sink 的名称
  • --namespace : 指定 sink 的命名空间
  • --parallelism : 指定 sink 的并发数
  • --sink-config-file : 指定 sink yaml 配置文件
  • --tenant : 指定 sink 的租户

Delete

删除 sink

Go
$ bin/pulsar-admin sink delete <options>

常用参数

  • --name : 指定 sink 的名称
  • --namespace : 指定 sink 的命名空间
  • --tenant : 指定 sink 的租户

List

显示所有 sink

Go
$ bin/pulsar-admin sink list <options>

常用参数

  • --namespace : 指定 sink 的命名空间
  • --tenant : 指定 sink 的租户

Get

显示 sink 的信息

Go
$ bin/pulsar-admin sink get <options>

常用参数

  • --name : 指定 sink 的名称
  • --namespace : 指定 sink 的命名空间
  • --tenant : 指定 sink 的租户

Status

显示 sink 的状态

Go
$ bin/pulsar-admin sink status <options>

常用参数

  • --instance-id :  指定 sink 的实例 ID
  • 如果未指定,则获取所有实例的状态
  • --name : 指定 sink 的名称
  • --namespace : 指定 sink 的命名空间
  • --tenant : 指定 sink 的租户

Stop

停止 sink

Go
$ bin/pulsar-admin sink stop <options>

常用参数

  • --instance-id :  指定 sink 的实例 ID
  • 如果未指定,则停止所有实例的状态
  • --name : 指定 sink 的名称
  • --namespace : 指定 sink 的命名空间
  • --tenant : 指定 sink 的租户

Start

启动 sink

Go
$ bin/pulsar-admin sink start <options>

常用参数

  • --instance-id :  指定 sink 的实例 ID
  • 如果未指定,则启动所有实例
  • --name : 指定 sink 的名称
  • --namespace : 指定 sink 的命名空间
  • --tenant : 指定 sink 的租户

Restart

重启 sink

Go
$ bin/pulsar-admin sink restart <options>

常用参数

  • --instance-id :  指定 sink 的实例 ID
  • 如果未指定,则获取所有实例的状态
  • --name : 指定 sink 的名称
  • --namespace : 指定 sink 的命名空间
  • --tenant : 指定 sink 的租户

Localrun

本地运行

在本地运行一个 Pulsar IO sink connector,方便调试。

Go
$ bin/pulsar-admin sink localrun <options>

常用参数

  • -a,--archive : 指定 source NAR
  • --classname : 指定 sink 的类名称
  • -i,--inputs : 指定 sink topic,多个 topic 用逗号隔开
  • --name : 指定 sink 的名称
  • --namespace : 指定 sink 的命名空间
  • --parallelism : 指定 sink 的并发数
  • --sink-config-file : 指定 sink yaml 配置文件
  • --tenant : 指定 sink 的租户

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
pulsar-java-spring-boot-starter是一个用于在Spring Boot应用程序中集成Apache Pulsar消息队列的开源库。Apache Pulsar是一个可扩展的、低延迟的分布式消息传递平台,它具有高吞吐量和高可靠性的特点。 pulsar-java-spring-boot-starter允许开发人员在Spring Boot应用程序中轻松地发送和接收Pulsar消息。它提供了一组容易使用的注解和工具类,简化了与Pulsar集群的交互。 使用pulsar-java-spring-boot-starter,开发人员可以通过添加依赖和配置一些属性来快速集成Pulsar到他们的Spring Boot应用程序中。一旦集成完成,开发人员可以使用注解来定义消息的生产者和消费者。通过生产者注解,开发人员可以将消息发送到Pulsar集群,并指定消息的主题和内容。通过消费者注解,开发人员可以订阅Pulsar主题,并定义接收和处理消息的方法。 除了基本的生产者和消费者功能,pulsar-java-spring-boot-starter还提供了一些其他特性。例如,它支持失败重试机制,当消息发送或接收出现问题时,可以自动重试。它还支持消息过滤器,可以按条件过滤接收的消息。而且,它还提供了一些监控和管理功能,可以方便地监控消息的生产和消费情况。 总之,pulsar-java-spring-boot-starter为Spring Boot开发人员提供了一种方便、快捷地集成Apache Pulsar消息队列的方法。它简化了与Pulsar集群的交互,提供了易于使用的注解和工具类,让开发人员可以更专注于业务逻辑的实现。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值