使用Adobe I/O启用和配置目录事件
目录事件是计算机生成的通知,用于描述通过Catalog Service提供的支持的目录更改。 它们支持事件驱动的工作流,例如:
- 使外部缓存或服务与目录更新保持同步。
- 当产品、变体、价格或类别发生更改时触发下游流程。
- 为需要近乎实时的目录更新的Experience Edge和Edge Delivery Services用例提供支持。
有关从Adobe Commerce到您的事件使用者的端到端路径,请参阅通过 Adobe I/O Events的事件传递。
支持的事件类型 supported-event-types
目录活动侧重于通过Adobe Developer Console公开的店面相关更改。 当前支持以下订阅。
每个事件包括:
- 描述变更类型的事件标识符。
- 实体和环境上下文,例如实例ID和SKU。
- 描述已更改实体和相关作用域信息的有效负载。
示例事件负载
ProductUpdated事件
{
"imsOrgId": "aaa-0",
"instanceId": "instance-9",
"eventCode": "productUpdated",
"sku": "1234",
"links": [
{"type": "variantOf", "sku": "5678"}
],
"scope": [
{ "storeViewCode": "US-us" },
{ "storeViewCode": "FR-fr" },
{ "storeViewCode": "DE-de" }
]
}
PriceUpdated事件
{
"imsOrgId": "aaa-0",
"instanceId": "instance-9",
"eventCode": "priceUpdated",
"sku": "1234",
"scope": [
{
"websiteCode": "website1",
"customerGroupCode": "customer-group-code1"
},
{
"websiteCode": "website2",
"customerGroupCode": "customer-group-code2"
}
]
}
通过Adobe I/O Events的事件传递 event-delivery-through-adobe-io-events
Adobe I/O Events将目录事件交付给您的集成。 下图显示了从Adobe Commerce到Catalog Service和Adobe I/O Events的目录更改到订阅使用者的高级流程:
以下步骤更详细地解释了每次切换:
- Adobe Commerce →目录服务
Adobe Commerce使用支持的SaaS Data Export扩展将目录数据导出到Catalog Service。
-
目录服务正在处理
- Catalog Service进程支持的目录更改,并为事件交付准备这些更改。
-
→的目录服务
- 目录事件已发布到Adobe I/O Events。
- 使用者使用日记、Webhook、Adobe I/O Runtime、Amazon EventBridge或其他支持的投放机制进行订阅。
Adobe I/O Events提供:
- 每个订阅者至少投放一次(可能存在重复事件)。
- 不保证跨投放订购。
您的消费者必须处理重复的事件和乱序投放。 有关实施指南,请参阅幂等性。
用例 use-cases
您可以在多个方案中使用目录事件。
静态站点和边缘交付
- 当目录数据更改时,重新生成目录页面和店面片段或使其失效。
- 避免频繁轮询Catalog Service API。
搜索索引和缓存
- 触发下游搜索索引中的增量更新。
- 当产品或类别数据更改时,更新缓存层或目录的外部视图。
与外部系统集成
- 将目录更改转发给外部系统,如PIM、定价引擎或其他业务线系统。
- 保持下游应用程序同步,而无需直接访问数据库。
监控和可观察性
将目录事件与现有的监视(例如,Grafana和Prometheus)合并为:
- 监视事件吞吐量。
- 检测目录更新卷中的异常。
启用目录事件 enable-catalog-events
要启用端到端目录事件,请执行以下步骤。
- 已启用Catalog Service的受支持Adobe Commerce环境。
- 已为Adobe Commerce配置 Adobe I/O 连接。
- 在配置了Commerce环境的同一IMS组织中访问Adobe Developer Console。
- 若要验证是否同步到Commerce SaaS服务,请在“管理员”中使用Data Management Dashboard。
- 仪表板验证需要产品推荐v6.0、Live Search v4.1.0+或Catalog Service v1.17+。 Adobe建议将您的Commerce项目更新到这些服务的最新支持版本。 对于较早的服务版本,请使用目录同步进行同步验证。
验证目录数据 verify-catalog-data
在配置之前,请验证Catalog Service是否具有来自您的Commerce实例的当前目录数据。 目录事件取决于SaaS Data Export完成两个阶段 — 确认两者:
注册并订阅Adobe I/O Events register-events
定义要订阅的Commerce事件,然后在项目中注册它们。
如果您的实例不在选择列表中,则它未连接到Adobe I/O。 有关解决问题的说明,请参阅 Adobe Commerce Developer 文档中的配置 Adobe I/O 连接。
-
从Adobe Developer Console,登录到用于Commerce项目的同一IMS组织。
-
为Commerce目录事件创建项目,或将事件API添加到现有项目。
-
在顶部导航中选择APIs and services。
-
在 Browse APIs and services 页面上,选择 Events 选项卡。
-
快速查找Commerce Catalog Events API。 在搜索框中键入Catalog,或按 Commerce 产品筛选。
-
在 Commerce Catalog Events 信息卡上,选择Project。
在Browse API和服务页上选择了
{width="600" modal="regular"}
-
-
配置事件注册。
选择要从中接收事件通知的Commerce实例。 然后选择Next。
在事件注册屏幕上选择
{width="600" modal="regular"}
-
选择要订阅的事件。
选择要接收的支持事件订阅,如 Product Update 或Price Update。 然后选择Next。
在注册屏幕上选择订阅的
{width="600" modal="regular"}
-
添加OAuth服务器到服务器凭据。
输入Credential name。 然后选择Next。
-
输入 Event registration name 和Event registration description。 然后选择Next。
-
在最终注册屏幕上,接受默认消费者Journaling API 。
通过默认的Journaling API使用者,您可以测试事件注册并确认事件已交付。 如果您已配置webhook或Adobe I/O Runtime操作使用者,请在此处选择它。 否则,请在消费者准备就绪后编辑事件注册。
{width="600" modal="regular"}
-
选择Complete registration。
配置事件消费者 configure-consumer
-
配置使用者,例如:
- webhook端点
- Adobe I/O Runtime操作
- 另一个受支持的目标
-
如果在注册期间未选择消费者,请编辑事件注册以添加消费者详细信息。
-
从Adobe Developer Console中,编辑您的项目。 然后,选择您创建的事件注册。
-
在事件注册详细信息页面上,选择Edit Events Registration。
-
选择Next,直到到达消费者选择屏幕。 然后,选择您配置的消费者。
-
将消费者更新到您配置的目标。 然后选择Save configured events。
-
验证事件流 validate-event-flow
为您的环境启用了目录事件。 当Commerce中的目录数据发生更改时,更新将通过Catalog Service流向Adobe I/O Events,并且您订阅的使用者将收到相应的目录事件。 在生成生产集成之前,请查看限制和最佳实践。
-
进行简单的受支持目录更改,如更新产品名称或更改价格。
-
确认以下结果:
- 更改通过Catalog Service API可见。
- 您的Adobe I/O Events消费者会收到相应的产品或价格事件。
限制和最佳实践 limits-and-best-practices
在构建目录事件时,请遵循这些最佳实践。
幂等性 idempotency
Adobe I/O Events可以多次交付相同的目录事件,单个产品的事件可能会不按顺序到达。 通过以下方式设计幂等消费者:
- 将实体ID与版本或时间戳字段一起使用。
- 安全地忽略相同更改的重复通知。
吞吐量和背压
更新率高的大型目录可能会产生大量的事件量。 确保:
- 使用者可以在吞吐量高峰时处理事件。
- 您可以根据需要使用缓冲、批量处理或队列。
安全性和隔离
- Adobe I/O Events强制实施租户隔离。
- 您的组织仅接收其自身环境和权利的事件。
模式演变
目录事件负载遵循与Catalog Service API相同的概念模型。 要保持向前兼容,请执行以下操作:
- 尽可能避免严格执行模式。
- 忽略未知字段而非失败。
目录事件疑难解答 troubleshoot-catalog-events
如果目录事件缺失或延迟,请完成这些步骤。
-
检查目录服务数据
使用 Catalog Service API确认已成功存储目录更改。
-
验证SaaS Data Export
目录事件需要Catalog Service中的当前数据。 确认导出路径的两个阶段:
-
从Commerce导出信息源 — 在数据信息源同步状态页面或
var/log/saas-export.log中,确认已成功从Commerce导出Catalog Service信息源。 -
同步到连接的Commerce SaaS服务 — 在数据管理功能板、目录同步或导出日志中,确认数据已成功同步到Catalog Service。
有关导出和同步作业的疑难解答,请参阅将数据与SaaS数据导出同步和日志记录和疑难解答。
-
-
验证Adobe I/O Events配置
确认:
- 您已在Adobe Developer Console中登录到正确的IMS组织。
- Commerce Catalog Events提供程序已启用。
- 预期的 Commerce Catalog Events 提供程序和环境可见。
- 订阅处于活动状态。
- 您的端点、操作或日志使用者可以接收和处理测试事件。
-
联系Adobe支持
打开支持票证时,请选择与 Adobe Commerce应用程序 对应的问题原因,并包含以下信息:
- 目录服务详细信息(环境、区域)。
- Adobe I/O Events订阅详细信息。
- 缺失事件的近似时间和描述。
有关其他帮助,请参阅支持票证。