将事件发布到 AMQP (RabbitMQ)
Table of Contents
MinIO 支持发布 bucket notification 事件到 AMQP 0-9-1 服务端点,例如 RabbitMQ.
MinIO 依赖于 streadway/amqp AMQP 连接项目。 这 项目主要针对 RabbitMQ 部署,虽然其他 AMQP 0-9-1-compatible 服务 may 也有效。 此页面上的过程假设一个 RabbitMQ 使用 AMQP 0-9-1 协议作为服务端点进行部署。
将 AMQP 端点添加到 MinIO 部署
以下过程添加了一个新的 AMQP 服务端点以支持 bucket notifications 在一个 MinIO部署。
Important
这个程序 requires 全部重启 minio server
流程
同时与部署相关联。 通常有一个简短的 API 操作中断或可能失败的时间段。
使用带有内置重试逻辑的 S3 兼容 SDK 的应用程序 or 实现手动重试逻辑通常不会遇到明显的中断 服务。 对于不能使用重试逻辑的应用,考虑调度 一个维护期,以尽量减少在执行时服务的中断这个程序。
先决条件
AMQP 0-9-1 服务端点
MinIO 依赖于 streadway/amqp AMQP 连接项目。 这 项目主要针对 RabbitMQ 部署,虽然其他 AMQP 0-9-1-compatible 服务 may 也有效。 此过程假设 RabbitMQ 部署 使用 0-9-1 协议作为服务端点。
如果 AMQP 服务需要身份验证,您 must 提供适当的 在配置过程中授予 MinIO 访问权限的用户名和密码 到服务。
MinIO mc
命令行工具
此过程使用 mc
用于某些操作的命令行工具。
见“mc” Quickstart 安装说明。
1) 将 AMQP 端点添加到 MinIO
您可以使用任一环境变量配置新的 AMQP 服务端点 or 通过设置运行时配置设置。
MinIO 支持指定 AMQP 服务端点和关联
配置设置使用
environment variables. The
minio server
进程在其上应用指定的设置
下次启动。
以下示例代码设置了 all 环境变量
与配置 AMQP 服务端点相关。 最低
required 变量是
MINIO_NOTIFY_AMQP_ENABLE
and MINIO_NOTIFY_AMQP_URL
:
set MINIO_NOTIFY_AMQP_ENABLE_<IDENTIFIER>="on"
set MINIO_NOTIFY_AMQP_URL_<IDENTIFIER>="<ENDPOINT>"
set MINIO_NOTIFY_AMQP_EXCHANGE_<IDENTIFIER>="<string>"
set MINIO_NOTIFY_AMQP_EXCHANGE_TYPE_<IDENTIFIER>="<string>"
set MINIO_NOTIFY_AMQP_ROUTING_KEY_<IDENTIFIER>="<string>"
set MINIO_NOTIFY_AMQP_MANDATORY_<IDENTIFIER>="<string>"
set MINIO_NOTIFY_AMQP_DURABLE_<IDENTIFIER>="<string>"
set MINIO_NOTIFY_AMQP_NO_WAIT_<IDENTIFIER>="<string>"
set MINIO_NOTIFY_AMQP_INTERNAL_<IDENTIFIER>="<string>"
set MINIO_NOTIFY_AMQP_AUTO_DELETED_<IDENTIFIER>="<string>"
set MINIO_NOTIFY_AMQP_DELIVERY_MODE_<IDENTIFIER>="<string>"
set MINIO_NOTIFY_AMQP_QUEUE_DIR_<IDENTIFIER>="<string>"
set MINIO_NOTIFY_AMQP_QUEUE_LIMIT_<IDENTIFIER>="<string>"
set MINIO_NOTIFY_AMQP_COMMENT_<IDENTIFIER>="<string>"
代替
<IDENTIFIER>
具有唯一的描述性字符串 AMQP 服务端点。 对所有使用相同的<IDENTIFIER>
值 与新 AMQP 服务端点相关的环境变量。 以下示例假定标识符为“PRIMARY”。如果指定的``<IDENTIFIER>`` 匹配现有的 AMQP 服务 MinIO 部署上的端点,新设置 override 该端点的任何现有设置。 用
mc admin config get notify_amqp
到 查看 MinIO 部署上当前配置的 AMQP 端点。代替
<ENDPOINT>
带有 AMQP 服务端点的 URL。 例如:amqp://user:password@hostname:port
见 AMQP Service for Bucket Notifications 完整的文档 在每个环境变量上。
MinIO 支持在运行时添加或更新 AMQP 端点
minio server
过程使用 mc admin config set
命令
和 notify_amqp
配置键。 您必须重新启动
minio server
应用任何新的或更新的配置的过程设置。
以下示例代码设置了与配置相关的 all 设置
AMQP 服务端点。 最小 required 设置是
notify_amqp url
:
mc admin config set ALIAS/ notify_amqp:IDENTIFIER \
url="ENDPOINT" \
exchange="<string>" \
exchange_type="<string>" \
routing_key="<string>" \
mandatory="<string>" \
durable="<string>" \
no_wait="<string>" \
internal="<string>" \
auto_deleted="<string>" \
delivery_mode="<string>" \
queue_dir="<string>" \
queue_limit="<string>" \
comment="<string>"
用唯一的描述性字符串替换 “IDENTIFIER” AMQP 服务端点。 此过程中的以下示例 假设标识符为 “PRIMARY”。
如果指定的“IDENTIFIER”与现有的 AMQP 服务匹配 MinIO 部署上的端点,新设置 override 该端点的任何现有设置。 用
mc admin config get notify_amqp
到 查看 MinIO 部署上当前配置的 AMQP 端点。将
ENDPOINT
替换为 AMQP 服务端点的 URL。 例如:amqp://user:password@hostname:port
见 AMQP Bucket Notification Configuration Settings 为完成 每个设置的文档。
2) 重启 MinIO 部署
您必须重新启动 MinIO 部署才能应用配置更改。
使用 mc admin service restart
命令重新启动部署。
mc admin service restart ALIAS
将 ALIAS
与 alias
部署到
重新开始。
The minio server
进程在启动时为每个配置的 AMQP 打印一行
目标类似于以下:
SQS ARNs: arn:minio:sqs::primary:amqp
您必须在配置存储桶通知时指定 ARN 资源 关联的 AMQP 部署作为目标。
3) 使用 AMQP 端点作为目标配置存储通知
使用 mc event add
添加新存储通知的命令
以配置的 AMQP 服务为目标的事件:
mc event add ALIAS/BUCKET arn:minio:sqs::primary:amqp \
--event EVENTS
将 “ALIAS” 替换为
alias
一个 MinIO 部署。将
BUCKET
替换为要在其中配置存储的名称事件。用逗号分隔的列表替换 “EVENTS” events MinIO 为其触发通知。
用 mc event list
查看所有配置的存储事件
给定的通知目标:
mc event list ALIAS/BUCKET arn:minio:sqs::primary:amqp
4) 验证配置的事件
对配置了新事件的存储执行操作,然后
检查 AMQP 服务以获取通知数据。 需要采取的行动
取决于哪个 events
被指定
配置通知时。
例如,如果存储通知配置包括
s3:ObjectCreated:Put
事件,您可以使用
mc cp
命令在存储中创建一个新对象并触发通知。
.. code-block:: shell
- class
copyable
mc cp ~/data/new-object.txt ALIAS/BUCKET
在 MinIO 部署中更新 AMQP 端点
以下过程更新现有的 AMQP 服务端点以支持 bucket notifications 在一个 MinIO 部署。
Important
这个程序 requires 全部重启 minio server
流程
同时与部署相关联。 通常有一个简短的 API 操作中断或可能失败的时间段。
使用带有内置重试逻辑的 S3 兼容 SDK 的应用程序 or 实现手动重试逻辑通常不会遇到明显的中断 服务。 对于不能使用重试逻辑的应用,考虑调度 一个维护期,以尽量减少在执行时服务的中断这个程序。
先决条件
AMQP 0-9-1 服务端点
MinIO 依赖于 streadway/amqp AMQP 连接项目。 这 项目主要针对 RabbitMQ 部署,虽然其他 AMQP 0-9-1-compatible 服务 may 也有效。 此过程 assumes RabbitMQ 部署 作为服务端点。
如果 AMQP 服务需要身份验证,您 must 提供适当的 在配置过程中授予 MinIO 访问权限的用户名和密码 到服务。
MinIO mc
命令行工具
此过程使用 mc
用于某些操作的命令行工具。
见 “mc” Quickstart 安装说明。
1 列出部署中已配置的 AMQP 端点
使用 mc admin config get
命令列出当前
在部署中配置的 AMQP 服务端点:
mc admin config get ALIAS/ notify_amqp
将 “ALIAS” 替换为 alias
MinIO 部署。
命令输出类似于以下内容:
notify_amqp:primary delivery_mode="0" exchange_type="" no_wait="off" queue_dir="" queue_limit="0" url="amqp://user:password@hostname:port" auto_deleted="off" durable="off" exchange="" internal="off" mandatory="off" routing_key=""
notify_amqp:secondary delivery_mode="0" exchange_type="" no_wait="off" queue_dir="" queue_limit="0" url="amqp://user:password@hostname:port" auto_deleted="off" durable="off" exchange="" internal="off" mandatory="off" routing_key=""
The notify_amqp
key 是一个顶级配置键
用于存储桶通知的 AMQP 服务. The
url
key 指定 AMQP 服务端点
对于给定的 notify_amqp 键。 notify_amqp:<IDENTIFIER>
后缀
描述该 AMQP 服务端点的唯一标识符。
记下要更新的 AMQP 服务端点的标识符 下一步。
2) 更新 AMQP 端点
使用 mc admin config set
设置新配置的命令
对于 AMQP 服务端点:
mc admin config set ALIAS/ notify_amqp:<IDENTIFIER> \
url="amqp://user:password@hostname:port" \
exchange="<string>" \
exchange_type="<string>" \
routing_key="<string>" \
mandatory="<string>" \
durable="<string>" \
no_wait="<string>" \
internal="<string>" \
auto_deleted="<string>" \
delivery_mode="<string>" \
queue_dir="<string>" \
queue_limit="<string>" \
comment="<string>"
The notify_amqp url
配置设置是
AMQP 服务端点需要 minimum。 所有其他配置
设置是 optional。 看 用于存储桶通知的 AMQP 服务
获取 AMQP 配置设置的完整列表。
3) 重启 MinIO 部署
您必须重新启动 MinIO 部署才能应用配置更改。
使用 mc admin service restart
命令重新启动部署。
mc admin service restart ALIAS
将 “ALIAS” 替换为 alias
部署到
重新开始。
The minio server
进程在启动时为每个配置的 AMQP 打印一行
目标类似于以下:
SQS ARNs: arn:minio:sqs::primary:amqp
3) 验证更改
使用更新的事件配置对具有事件配置的存储桶执行操作
AMQP 服务端点并检查 AMQP 服务以获取通知数据。 这
需要采取的行动取决于哪个 events
是
配置存储通知时指定。
例如,如果存储通知配置包括
s3:ObjectCreated:Put
事件,您可以使用
mc cp
命令在存储中创建一个新对象并触发
通知。
mc cp ~/data/new-object.txt ALIAS/BUCKET