複製 replication

Adobe Experience Manager as a Cloud Service使用Sling內容發佈功能將內容移動至復寫至AEM執行階段以外的Adobe Developer上執行的管道服務。

NOTE
閱讀發佈以取得詳細資訊。

發佈內容的方法 methods-of-publishing-content

NOTE
如果您有興趣大量發佈內容,請使用樹狀啟動工作流程步驟建立工作流程,以有效處理大量負載。
不建議建置您自己的大量發佈自訂程式碼。
如果您因任何原因必須自訂,則可使用現有的工作流程API,透過此步驟觸發工作流程。
只發佈必須發佈的內容永遠是好的做法。 如果不需要的話,也不要嘗試發佈大量內容。 不過,您可以使用樹狀啟動工作流程步驟在工作流程中傳送的內容數量並無限制。

快速取消/發佈 — 計畫取消/發佈 publish-unpublish

此功能可讓您立即發佈所選頁面,無需透過「管理發布」方法選擇其他選項。

如需詳細資訊,請參閱管理出版物

開啟和關閉時間 — 觸發器設定 on-and-off-times-trigger-configuration

開啟時間​和​ 關閉時間 ​的其他可能性可從頁面屬性🔗的基本索引標籤取得。

若要實現此功能的自動復寫,請在OSGi設定 開啟關閉觸發程式設定​中啟用​自動復寫

OSGi開啟關閉觸發器組態

管理發佈 manage-publication

管理發布提供比「快速發佈」更多的選項,允許包含子頁面、自訂參照和啟動任何適用的工作流程,並提供稍後發佈的選項。

將資料夾的子項納入「稍後發佈」選項會叫用發佈內容樹狀工作流程,如樹狀復寫工作流程中所述。

您可以在出版基礎檔案中找到有關管理出版的詳細資訊。

若要大量複製深層內容階層,請使用工作流程型方法。 請參閱樹狀結構復寫工作流程,以取得建議的樹狀結構啟動工作流程步驟、設定引數和監視指引。 已過時的發佈內容樹狀工作流程也在此處記錄,以供參考。

復寫API replication-api

您可以使用AEM as a Cloud Service提供的復寫API發佈內容。

如需詳細資訊,請參閱API檔案

API的基本用法

@Reference
Replicator replicator;
@Reference
ReplicationStatusProvider replicationStatusProvider;

....
Session session = ...
// Activate a single page to all agents, which are active by default
replicator.replicate(session,ReplicationActionType.ACTIVATE,"/content/we-retail/en");
// Activate multiple pages (but try to limit it to approx 100 at max)
replicator.replicate(session,ReplicationActionType.ACTIVATE, new String[]{"/content/we-retail/en","/content/we-retail/de"});

// ways to get the replication status
Resource enResource = resourceResolver.getResource("/content/we-retail/en");
Resource deResource = resourceResolver.getResource("/content/we-retail/de");
ReplicationStatus enStatus = enResource.adaptTo(ReplicationStatus.class);
// if you need to get the status for more than 1 resource at once, this approach is more performant
Map<String,ReplicationStatus> allStatus = replicationStatusProvider.getBatchReplicationStatus(enResource,deResource);

復寫代理程式

AEM as a Cloud Service提供兩種預先定義的復寫代理,可透過Sling Content Distribution將內容從製作層路由到目標層:

  • 發佈 — 將啟用的內容復寫到即時發佈階層。 此代理程式預設為啟用,並用於您從UI、工作流程或復寫API發佈時,除非您另有指定。
  • 預覽 — 將內容復寫到預覽層,讓作者可以在變更上線前檢閱變更。 預設不會啟用此代理程式。

您可以從​工具 > 部署 > 發佈​檢視及監視這兩個代理程式:

發佈代理程式顯示發佈和預覽

選取代理程式卡片會開啟其狀態、記錄檔及佇列詳細資料

使用特定代理程式復寫

使用如上所示的API復寫時,僅使用預設啟用的代理程式 — 在AEM as a Cloud Service中,即​發佈。 若要僅復寫至預覽層,請傳遞選取預覽代理程式的AgentFilter

請參閱下列範例:

private static final String PREVIEW_AGENT = "preview";

ReplicationStatus beforeStatus = enResource.adaptTo(ReplicationStatus.class); // beforeStatus.isActivated == false

ReplicationOptions options = new ReplicationOptions();
options.setFilter(new AgentFilter() {
  @Override
  public boolean isIncluded (Agent agent) {
    return agent.getId().equals(PREVIEW_AGENT);
  }
});
// will replicate only to preview
replicator.replicate(session,ReplicationActionType.ACTIVATE,"/content/we-retail/en", options);

ReplicationStatus afterStatus = enResource.adaptTo(ReplicationStatus.class); // afterStatus.isActivated == false
ReplicationStatus previewStatus = afterStatus.getStatusForAgent(PREVIEW_AGENT); // previewStatus.isActivated == true

如果您在沒有AgentFilter的情況下進行復寫,則只會使用​發佈,預覽層級不受影響。

只有當復寫包含至少一個預設為啟用的代理程式時,資源的整體ReplicationStatus才會更新。 在上述範例中,僅使用了​預覽,因此ReplicationStatus.isActivated仍為false。 使用getStatusForAgent()檢查特定代理程式的狀態,例如,僅預覽復寫後的getStatusForAgent("preview"),或即時發佈層級的getStatusForAgent("publish")

讓內容失效的方法 invalidating-content

您可以使用作者的Sling內容失效(SCD) (偏好方法)或使用復寫API叫用發佈Dispatcher Flush復寫代理程式,直接讓內容失效。 如需詳細資訊,請參閱快取頁面。

復寫API容量限制

一次複製少於100個路徑,以500為限制。 超過限制,擲回ReplicationException
如果您的應用程式邏輯不需要原子式復寫,您可以將ReplicationOptions.setUseAtomicCalls設定為false,這會接受任何數量的路徑,但在內部建立儲存貯體以保持在此限制以下。

每個復寫呼叫所傳輸的內容大小不得超過10 MB。 此規則包含節點和屬性,但不包含任何二進位檔(工作流程套件和內容套件會視為二進位檔)。

復寫佇列 replication-queues

每個復寫代理程式會顯示兩個復寫佇列。 AEM as a Cloud Service不再為每個發佈pod顯示單獨的佇列 — 發佈層級會自動調整,因此每個pod佇列會增加複雜性,而不會帶來實際好處。 佇列狀態會合併如下:

  • 持續存在 — 變更會持續儲存在發佈層級。 專案清除此佇列後,內容會持續存在;發佈執行個體會隨著時間達到一致狀態。
  • 已完整發佈 — 變更已在所有發佈Pod上線,且受影響路徑的Dispatcher快取已清除。 專案清除此佇列後,訪客會收到更新的內容。

監視復寫佇列 monitor-replication-queues

  1. 從AEM 全域導覽,導覽至​工具 > 部署

    從工具瀏覽至發佈

  2. 選取​發佈,然後開啟​ 發佈 ​或​ 預覽 ​代理程式卡。

  3. 在​ 狀態 ​標籤上,確認每個佇列都顯示正常狀態。 檢閱​ 個擱置中的專案 ​以等待處理工作,檢閱​最近處理過的專案

    顯示持續和完整發佈的復寫佇列

  4. 選取​ 測試連線 ​以驗證代理程式可連線到散發服務。

  5. 選取​ 記錄檔 ​索引標籤以檢視內容發佈的歷程記錄。

    復寫記錄檔

疑難排解 troubleshooting

如果內容無法發佈,則會從AEM發佈服務還原發佈。 使用監視復寫佇列開啟代理程式​ 狀態 ​標籤,並識別受影響的佇列。

當佇列顯示紅色狀態時,請檢閱其擱置專案以找出導致失敗的原因。 選取佇列以檢視暫止專案,然後視需要清除個別專案或整個佇列。

recommendation-more-help
experience-manager-cloud-service-help-main-toc