中文文档

将事件发布到 AMQP (RabbitMQ)

MinIO 支持将 bucket notification 事件发布到类似于 RabbitMQAMQP 0-9-1 服务端点。

MinIO 依赖 https://github.com/streadway/amqp 项目来实现 AMQP 连接。 该项目主要针对 RabbitMQ 部署进行了 测试,尽管其他 AMQP 0-9-1 兼容 的服务 可能 也能正常工作。 本页上的程序假设使用 AMQP 0-9-1 协议的 RabbitMQ 部署作为服务端点。

将 AMQP 端点添加到 MinIO 部署

以下步骤为 MinIO 部署添加一个新的 AMQP 服务端点 以支持 MinIO 中的存储桶通知 。 部署。

先决条件

AMQP 0-9-1 服务端点

MinIO 依赖 https://github.com/streadway/amqp 项目来实现 AMQP 连接。 该项目主要针对 RabbitMQ 部署进行了 测试,尽管其他 AMQP 0-9-1 兼容 的服务 可能 也能正常工作。 这个程序假设使用 0-9-1 协议的 RabbitMQ 部署作为服务端点。

如果 AMQP 服务需要身份验证, 您 必须 在配置过程中提供一个合适的用户名和密码, 以便授予 MinIO 访问该服务的权限。

MinIO mc 命令行工具

此过程使用 mc 命令行工具执行某些操作。 请参阅 mc快速入门 以获取安装说明。

1) 将 AMQP 端点添加到 MinIO

您可以通过设置环境变量 运行时配置设置来配置新的 AMQP 服务端点。

MinIO 支持使用 环境变量 来指定 AMQP 服务端点及相关配置设置。 The minio server 进程会在其下一次启动时应用指定 的设置。

以下示例代码设置 所有 与配置 AMQP 服务端点相关的环境变量。 最小 必需 的变量是 MINIO_NOTIFY_AMQP_ENABLEMINIO_NOTIFY_AMQP_URL:

   export MINIO_NOTIFY_AMQP_ENABLE_<IDENTIFIER>="on"
   export MINIO_NOTIFY_AMQP_URL_<IDENTIFIER>="<ENDPOINT>"
   export MINIO_NOTIFY_AMQP_EXCHANGE_<IDENTIFIER>="<string>"
   export MINIO_NOTIFY_AMQP_EXCHANGE_TYPE_<IDENTIFIER>="<string>"
   export MINIO_NOTIFY_AMQP_ROUTING_KEY_<IDENTIFIER>="<string>"
   export MINIO_NOTIFY_AMQP_MANDATORY_<IDENTIFIER>="<string>"
   export MINIO_NOTIFY_AMQP_DURABLE_<IDENTIFIER>="<string>"
   export MINIO_NOTIFY_AMQP_NO_WAIT_<IDENTIFIER>="<string>"
   export MINIO_NOTIFY_AMQP_INTERNAL_<IDENTIFIER>="<string>"
   export MINIO_NOTIFY_AMQP_AUTO_DELETED_<IDENTIFIER>="<string>"
   export MINIO_NOTIFY_AMQP_DELIVERY_MODE_<IDENTIFIER>="<string>"
   export MINIO_NOTIFY_AMQP_QUEUE_DIR_<IDENTIFIER>="<string>"
   export MINIO_NOTIFY_AMQP_QUEUE_LIMIT_<IDENTIFIER>="<string>"
   export MINIO_NOTIFY_AMQP_COMMENT_<IDENTIFIER>="<string>"
  • <IDENTIFIER> 替换为AMQP服务端点的唯一 描述性字符串。 将 <IDENTIFIER> 值 用于所有与新AMQP服务端点相关的环境变量。 以下示例假设标识符为 PRIMARY

    如果指定的 <IDENTIFIER> 与MinIO部署上 现有的AMQP服务端点匹配, 新设置将 覆盖 该端点上的任何现有设置。 使用 mc admin config get notify_amqp 来查看MinIO部署上当前配置的AMQP端点。

  • <ENDPOINT> 替换为AMQP服务端点的URL。 例如:

    amqp://user:password@hostname:port

请参阅 用于存储桶通知的 AMQP 服务 以获取每个环境变量的完整文档。

MinIO 支持在运行中的 minio server 进程上 使用 mc admin config set 命令和 notify_amqp 配置键添加或更新 AMQP 端点。 您必须重新启动 minio server 进程 以应用任何新的或更新的配置设置。

以下示例代码设置了与配置AMQP服务端点 相关的 所有 设置。 最小 必需 的设置是 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 与MinIO部署上现有 的AMQP服务端点匹配,新的设置将 覆盖 该 端点现有的任何设置。 使用 mc admin config get notify_amqp 来查看MinIO部署上当前配置的AMQP端点。

  • ENDPOINT 替换为AMQP服务端点的URL。 例如:

    amqp://user:password@hostname:port

请参阅 AMQP 存储桶通知配置设置 以获取每个设置的完整文档。

2) 重新启动MinIO部署。

您必须重新启动MinIO部署以应用配置更改。 使用 mc admin service restart 命令来重新启动部署。

mc admin service restart ALIAS

ALIAS 替换为要重新启动的部署的 别名

当启动 minio server 进程时,它会为每个配置的AMQP目标打印一行, 类似于以下内容:

SQS ARNs: arn:minio:sqs::primary:amqp

在配置具有关联AMQP部署作为目标的桶通知时, 您必须指定ARN资源。

Identifying the ARN for your bucket notifications

在创建端点之前,您定义了 <IDENTIFIER> 以便为您的存储桶通知分配目标ARN。 以下是返回部署上配置的ARNs的步骤: 识别之前创建的ARN,请查找您指定的 <IDENTIFIER>

查看 JSON 输出

  1. 复制并运行以下命令,将 ALIAS 替换为部署的 别名

    mc admin info --json ALIAS
    
  2. 在JSON输出中,查找键 info.sqsARN

    您需要的ARN是匹配您指定的 <IDENTIFIER> 的该键的值。

    例如, arn:minio:sqs::primary:amqp.

使用 jq 解析 JSON 中的值

  1. Install jq

  2. 复制并运行以下命令,将 ALIAS 替换为部署的 别名

    mc admin info --json ALIAS | jq  .info.sqsARN
    

    这将返回用于通知的ARN,例如 arn:minio:sqs::primary:amqp

3) 使用AMQP端点作为目标配置桶通知

使用 mc event add 命令添加一个新的桶通知事件, 以配置的AMQP服务作为目标:

mc event add ALIAS/BUCKET arn:minio:sqs::primary:amqp \
  --event EVENTS
  • ALIAS 替换为MinIO部署的 别名

  • BUCKET 替换为您要配置事件的桶的 名称。

  • EVENTS 替换为 MinIO 触发通知的 事件 的逗号分隔列表。

使用 mc event ls 命令查看给定通知目标的 所有配置桶事件:

mc event ls ALIAS/BUCKET arn:minio:sqs::primary:amqp

4) 验证配置的事件

对已配置新事件的桶执行一个操作, 并检查AMQP服务以获取通知数据。 所需操作取决于在配置桶通知时指定的 事件

例如,如果桶通知配置包括 s3:ObjectCreated:Put 事件, 您可以使用 mc cp 命令在 桶中创建一个新对象并 触发通知。

mc cp ~/data/new-object.txt ALIAS/BUCKET

更新 MinIO 部署中的 AMQP 端点

以下过程更新现有的 AMQP 服务端点以支持 MinIO 中的存储桶通知 部署。

先决条件

AMQP 0-9-1 服务端点

MinIO 依赖 https://github.com/streadway/amqp 项目来实现 AMQP 连接。 该项目主要针对 RabbitMQ 部署进行了 测试,尽管其他 AMQP 0-9-1 兼容 的服务 可能 也能正常工作。 此过程 假设 RabbitMQ 部署 作为服务端点。

如果 AMQP 服务需要身份验证, 您 必须 在配置过程中提供一个适当的用户名和密码, 以授予 MinIO 访问服务的权限。

MinIO mc 命令行工具

此过程使用 mc 命令行工具执行某些操作。 请参阅 mc快速入门 以获取安装说明。

1) 列出部署中配置的 AMQP 端点

使用 mc admin config get 命令列出当前 在部署中配置的 AMQP 服务端点:

mc admin config get ALIAS/ notify_amqp

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=""

notify_amqp 是一个顶级配置键,用于配置 minio-server-config-bucket-notification-amqpurl 键指定给定 notify_amqp 键的 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>"

notify_amqp url 配置设置是AMQP服务端点的 最小 要求。 所有其他配置 设置都是 可选的。 请参阅 minio-server-config-bucket-notification-amqp 以获取完整的AMQP配置设置列表。

3) 重新启动MinIO部署。

您必须重新启动MinIO部署以应用配置更改。 使用 mc admin service restart 命令来重新启动部署。

mc admin service restart ALIAS

ALIAS 替换为要重新启动的部署的 别名

当启动 minio server 进程时,它会为每个配置的AMQP目标打印一行, 类似于以下内容:

SQS ARNs: arn:minio:sqs::primary:amqp

4) 验证更改

在更新后的AMQP服务端点上对具有事件配置的存储桶执行一个操作, 并检查AMQP服务是否收到了通知数据。 所需操作取决于在配置存储桶通知时指定的 events

例如,如果桶通知配置包括 s3:ObjectCreated:Put 事件, 您可以使用 mc cp 命令在 桶中创建一个新对象并 触发通知。

mc cp ~/data/new-object.txt ALIAS/BUCKET
Join Slack 商业支持购买咨询