Manage packages

    一个完整的由五个部分组成:typetenantnamespacepackage nameversion

    以下是 Package 的定义示例。

    Package 通过 URL 来标识位置。 Package 的 URL 遵循以下格式:

    1. <type>://<tenant>/<namespace>/<package name>@<version>

    以下是一些 Package 的 URL 示例:

    sink://public/default/mysql-sink@1.0
    function://my-tenant/my-ns/my-function@0.1
    source://my-tenant/my-ns/mysql-cdc-source@2.3

    Package 管理系统存储了每个 Package 的数据、版本和元数据。 元数据包含的内容如下表所示。

    metadata说明
    描述Package 的描述
    联系方式Package 的联系方式: 比如团队邮箱地址。
    创建时间Package 的创建时间。
    修改时间Package 的修改时间
    properties存储自定义信息的键值对。

    Package 的层级通过租户和命名空间来组织,所以你可以直接将租户和命名空间的权限应用到 Package 上。

    你可以通过命令行、REST API 和 Java 客户端来管理 Package。

    你可以通过以下方式将 Package 上传到 Package 管理服务中。

    pulsar-admin

    REST API

    JAVA

    1. bin/pulsar-admin packages upload function://public/default/example@v0.1 --path package-file --description package-description

    POST /admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.9.2

    使用同步调用的方式上传到 Package 管理服务中。

    1. void upload(PackageMetadata metadata, String packageName, String path) throws PulsarAdminException;

    使用异步调用的方式上传到 Package 管理服务中。

    1. CompletableFuture<Void> uploadAsync(PackageMetadata metadata, String packageName, String path);

    下载 Package

    你可以通过以下方式从 Package 管理服务中下载 Package。

    pulsar-admin

    REST API

    1. bin/pulsar-admin packages download function://public/default/example@v0.1 --path package-file

    GET /admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.9.2

    使用同步调用的方式从 Package 管理服务中下载 Package。

    1. void download(String packageName, String path) throws PulsarAdminException;

    使用异步调用的方式从 Package 管理服务中下载 Package。

    可以通过以下方式列出 Package 的所有版本。

    pulsar-admin

    REST API

    JAVA

    使用同步调用的方式列出 Package 的所有版本。

    1. List<String> listPackageVersions(String packageName) throws PulsarAdminException;

    使用异步调用的方式列出 Package 的所有版本。

      列出某个命名空间下指定类型的 Package

      你可以通过以下方式列出某个命名空间下的所有指定类型的Package。

      pulsar-admin

      REST API

      JAVA

      1. bin/pulsar-admin packages list --type function public/default

      使用同步调用的方式列出某个命名空间下的所有指定类型的 Package。

      1. List<String> listPackages(String type, String namespace) throws PulsarAdminException;

      使用异步调用的方式列出某个命名空间下的所有指定类型的Package。

      1. CompletableFuture<List<String>> listPackagesAsync(String type, String namespace);

      可以通过以下方式获取 Package 的元数据。

      REST API

      JAVA

      GET /admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.9.2

      使用同步调用的方式获取 Package 的元数据。

      1. PackageMetadata getMetadata(String packageName) throws PulsarAdminException;

      使用异步调用的方式获取 Package 的元数据。

      1. CompletableFuture<PackageMetadata> getMetadataAsync(String packageName);

      更新 Package 的元数据

      你可以通过以下方式更新Package的元数据。

      pulsar-admin

      REST API

      JAVA

      1. bin/pulsar-admin packages update-metadata function://public/default/example@v0.1 --description update-description

      PUT /admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.9.2

      使用同步调用的方式更新 Package 的元数据。

      1. void updateMetadata(String packageName, PackageMetadata metadata) throws PulsarAdminException;

      使用异步调用的方式获取Package的元数据。

      1. CompletableFuture<Void> updateMetadataAsync(String packageName, PackageMetadata metadata);

      可以通过以下方式使用 Package 名删除特定版本的 Package。

      pulsar-admin

      REST API

      JAVA

      以下命令行示例将删除一个版本为 0.1 的 Package。

      使用异步调用的方式删除特定版本的 Package。