Manage packages
一个完整的由五个部分组成:type
、tenant
、namespace
、package name
、version
。
以下是 Package 的定义示例。
Package 通过 URL 来标识位置。 Package 的 URL 遵循以下格式:
<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
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 管理服务中。
void upload(PackageMetadata metadata, String packageName, String path) throws PulsarAdminException;
使用异步调用的方式上传到 Package 管理服务中。
CompletableFuture<Void> uploadAsync(PackageMetadata metadata, String packageName, String path);
下载 Package
你可以通过以下方式从 Package 管理服务中下载 Package。
pulsar-admin
REST API
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。
void download(String packageName, String path) throws PulsarAdminException;
使用异步调用的方式从 Package 管理服务中下载 Package。
可以通过以下方式列出 Package 的所有版本。
pulsar-admin
REST API
JAVA
使用同步调用的方式列出 Package 的所有版本。
List<String> listPackageVersions(String packageName) throws PulsarAdminException;
使用异步调用的方式列出 Package 的所有版本。
列出某个命名空间下指定类型的 Package
你可以通过以下方式列出某个命名空间下的所有指定类型的Package。
pulsar-admin
REST API
JAVA
bin/pulsar-admin packages list --type function public/default
使用同步调用的方式列出某个命名空间下的所有指定类型的 Package。
List<String> listPackages(String type, String namespace) throws PulsarAdminException;
使用异步调用的方式列出某个命名空间下的所有指定类型的Package。
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 的元数据。
PackageMetadata getMetadata(String packageName) throws PulsarAdminException;
使用异步调用的方式获取 Package 的元数据。
CompletableFuture<PackageMetadata> getMetadataAsync(String packageName);
更新 Package 的元数据
你可以通过以下方式更新Package的元数据。
pulsar-admin
REST API
JAVA
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 的元数据。
void updateMetadata(String packageName, PackageMetadata metadata) throws PulsarAdminException;
使用异步调用的方式获取Package的元数据。
CompletableFuture<Void> updateMetadataAsync(String packageName, PackageMetadata metadata);
可以通过以下方式使用 Package 名删除特定版本的 Package。
pulsar-admin
REST API
JAVA
以下命令行示例将删除一个版本为 0.1 的 Package。
使用异步调用的方式删除特定版本的 Package。