SuperAPI AI 工具集

sling-distribution

部署与运维

查看项目

更新于 10-15 12:59

技能介绍

用途

Sling Distribution 是 AEM Cloud Service 中内容复制的底层传输机制。当使用 Replication API(Replicator.replicate())时,Sling Distribution 负责包创建、排队、传输到 Adobe Developer pipeline 服务,以及在目标层导入并应用内容。本技能用于监控并响应内容分发生命周期事件,适合以下场景:

  • 监控分发生命周期:跟踪包的创建、排队与投递
  • 自定义分发后动作:缓存预热、通知、分析
  • 分发审计:记录并跟踪所有分发事件
  • 失败处理:响应被丢弃的包与分发失败
  • 集成工作流:在分发成功后触发外部系统

若需以编程方式发布内容,应改用 Replication API。

架构流程

Replication API 调用后,事件依次触发:

  • AGENT_PACKAGE_CREATED:包已组装
  • AGENT_PACKAGE_QUEUED:包已加入队列
  • AGENT_PACKAGE_DISTRIBUTED:包已发送至 pipeline
  • IMPORTER_PACKAGE_IMPORTED:包已在目标层导入

或:

  • AGENT_PACKAGE_DROPPED:包失败并被移除

分发事件主题

Sling Distribution 在分发生命周期的每个阶段触发事件:

  • AGENT_PACKAGE_CREATED:包创建后触发,用于跟踪正在发布的内容
  • AGENT_PACKAGE_QUEUED:包排队后触发,用于监控队列深度
  • AGENT_PACKAGE_DISTRIBUTED:成功分发后触发,用于触发发布后动作
  • AGENT_PACKAGE_DROPPED:包失败并被丢弃时触发,用于处理失败、告警值班人员
  • IMPORTER_PACKAGE_IMPORTED:目标层成功导入后触发,用于确认内容已上线

事件主题常量位于 org.apache.sling.distribution.event.DistributionEventTopics。

事件属性

每个分发事件包含以下属性:

  • DISTRIBUTION_COMPONENT_NAME(String):生成事件的组件名称
  • DISTRIBUTION_COMPONENT_KIND(String):组件类型(agent、importer 等)
  • DISTRIBUTION_TYPE(String):分发请求类型(ADD、DELETE 等)
  • DISTRIBUTION_PACKAGE_ID(String):唯一包标识符
  • DISTRIBUTION_PATHS(String[]):正在分发的内容路径
  • DISTRIBUTION_DEEP_PATHS(String[]):深层路径(完整子树)
  • DISTRIBUTION_ENQUEUE_TIMESTAMP(Long):入队时间(毫秒)

属性常量位于 org.apache.sling.distribution.event.DistributionEventProperties。

使用方式

通过实现 OSGi EventHandler 并声明对应的事件主题来监听分发事件。基本步骤:

  1. 创建实现 EventHandler 的组件,使用 @Component 注解并设置 EVENT_TOPIC 属性为一个或多个分发事件主题。
  2. 在 handleEvent(Event event) 方法中,通过 event.getTopic() 获取主题,通过 event.getProperty(...) 读取上述事件属性。
  3. 根据主题与属性执行自定义逻辑。

示例:基本分发事件日志记录器会监听全部五个主题,提取组件名称、类型、包 ID、路径与时间戳并记录日志。

常见用例

  • 分发失败告警:仅监听 AGENT_PACKAGE_DROPPED,提取包 ID 与路径,记录错误并向运维团队发送告警。
  • CDN 缓存预热:监听 IMPORTER_PACKAGE_IMPORTED,仅在分发类型为 ADD 时,将 JCR 路径转换为公开 URL 并请求以预热缓存。
  • 分发分析追踪:监听创建、分发、丢弃主题,向分析服务上报包创建、分发耗时与失败等指标。
  • 生产发布 Slack 通知:监听 IMPORTER_PACKAGE_IMPORTED,仅在运行模式包含 prod 且组件名为 publish 时,向指定频道发送发布消息。
  • 全量分发事件审计日志:监听全部主题,在 /var/audit/distribution 下创建审计节点,记录主题、包 ID、路径与时间戳。

适用场景与限制

适用于 AEM Cloud Service 环境中需要监控内容分发生命周期、在分发各阶段触发自定义动作或集成外部系统的开发场景。资料中未提供关于收费、价格、平台支持范围、性能效果或具体安装命令的信息。官方 API 文档(Javadoc)地址为:https://developer.adobe.com/experience-manager/reference-materials/cloud-service/javadoc/org/apache/sling/distribution/package-summary.html。关键包包括 org.apache.sling.distribution(核心分发接口)、org.apache.sling.distribution.event(事件主题与属性)、org.apache.sling.distribution.queue(队列监控)。