AEM 6.5.10反向复制仅新增cq:distribute属性时生效异常咨询
问题产生原因
- AEM 6.5版本的反向复制默认触发逻辑为监听
cq:distribute属性的新增(ADDED)事件,仅当该属性被新写入节点时,才会将对应节点加入发件箱待反向复制队列。 - 若节点上已存在
cq:distribute=true属性,仅修改节点其他属性、未变更cq:distribute属性本身的场景下,不会生成符合触发规则的事件,反向复制代理轮询时自然无法抓取到待处理内容。 - 手动删除属性后再通过Servlet添加的操作,本质是重新触发了
cq:distribute的新增事件,所以可以正常触发复制。
对应解决方案
方案1:调整Servlet逻辑(推荐,改造成本最低)
每次Servlet执行属性修改逻辑时,先删除节点已有的cq:distribute属性,再重新赋值为true,强制触发新增事件,示例代码逻辑如下:
if (node.hasProperty("cq:distribute")) { node.getProperty("cq:distribute").remove(); } // 执行自定义属性修改逻辑 node.setProperty("yourCustomAttr", "newValue"); // 重新设置cq:distribute属性 node.setProperty("cq:distribute", true); session.save();
方案2:修改反向复制代理监听规则
进入作者实例反向复制代理的配置页面,调整事件监听规则,除原有cq:distribute新增事件外,额外增加节点修改事件的监听。注意需同步添加自定义属性过滤规则,避免无关节点变更触发不必要的反向复制,增加系统额外负载。
方案3:主动调用复制API(可控性最高)
修改Servlet逻辑,完成节点属性修改后,直接调用AEM原生Replicator API的distribute方法主动触发反向复制,完全绕开事件监听的规则限制,适合业务逻辑复杂、需要精准控制复制时机的场景。
内容的提问来源于stack exchange,提问作者Vinit Pillai
相关产品推荐
相关产品推荐

