Understanding AEM replication agents, content activation workflow, and Dispatcher flush mechanism.
Replication và Activation
1. Tổng Quan: Replication Là Gì?
Replication là cơ chế AEM dùng để chuyển nội dung từ Author sang một hoặc nhiều Publish instance. Khi author nhấn "Publish" (hay "Activate"), AEM thực hiện theo pipeline 4 bước:
- Trigger — Author activate page thủ công, qua workflow, hoặc programmatically
- Serialize — Replication agent đọc các node từ JCR, đóng gói thành payload
- Transport — Payload được gửi qua HTTP/HTTPS tới publish receiver servlet
- Deserialize & Install — Publish giải nén payload, ghi vào JCR của nó
Lưu ý quan trọng: AEM chỉ serialize page node và subtree
jcr:contentcủa nó. Assets và components được tham chiếu không tự động được include — phải activate riêng hoặc qua workflow xử lý references.
2. Replication Agents
Replication agent là đối tượng cấu hình quyết định gửi đi đâu và gửi như thế nào.
Vị trí mặc định trên Author
Truy cập agent mặc định:
Các thuộc tính quan trọng
Bảo mật: Luôn dùng dedicated service user với quyền tối thiểu cho
transportUser. Không bao giờ dùngadmintrong production.
Tạo agent qua CRXDE
Tạo node type cq:Page tại /etc/replication/agents.author/my-agent với jcr:content:
3. Flush Agents — Dispatcher Cache Invalidation
Flush agent là loại replication agent đặc biệt: mục đích không phải replicate content mà là báo cho Dispatcher xóa cache khi content thay đổi.
Cơ chế hoạt động
Cấu hình
Transport URI trỏ đến Dispatcher invalidation endpoint:
Headers gửi đến Dispatcher
Cấu hình section
/invalidatetrongdispatcher.anyđể giới hạn path nào được flush, tránh cache miss lan rộng sang các site tree khác.
4. Programmatic Replication
AEM 6.5 expose service Replicator để trigger replication từ Java code — dùng trong workflow, servlet, hoặc scheduled job.
Activate / Deactivate cơ bản
Replicate tới agent cụ thể
Lưu ý:
Sessionphải đến từ service user có quyền replication — không dùng session từ HTTP request trong servlet context.
5. Tree Activation
Tree Activation publish toàn bộ một subtree chỉ với một thao tác, thay vì activate từng page.
Qua UI
- Vào Tools → Replication → Tree Activation
- Set Start Path (VD:
/content/mysite/en) - Tùy chọn Modified Only — bỏ qua các page chưa thay đổi
- Tùy chọn Dry Run — preview trước khi thực thi
- Nhấn Activate
Programmatic
Với subtree lớn (hàng nghìn page): dùng Managed Publishing workflow hoặc Sling Job chạy background để tránh HTTP timeout và queue overload.
6. Reverse Replication
Reverse replication chuyển content ngược chiều — từ Publish về Author. Dùng khi content phát sinh trên publish tier.
Cơ chế
Nên dùng khi
- Form submission data cần tổng hợp về author
- User-generated content (UGC) từ AEM Communities
- Analytics hoặc feedback data phát sinh trên publish
Không nên dùng khi
- Luồng data lớn — reverse replication không thiết kế cho bulk transfer
- Yêu cầu realtime — polling có độ trễ
- Nên dùng external database hoặc API riêng khi data volume cao
7. Replication Queue Monitoring
Monitoring queue là thiết yếu để đảm bảo pipeline publish ổn định.
Truy cập Queue
Hoặc qua Touch UI:
Nguyên nhân queue bị stall
Retry behavior
Khi replicate thất bại, agent retry theo retryDelay và maxRetries. Sau khi hết retry, item ở trạng thái failed — admin phải retry hoặc xóa thủ công.
FIFO blocking: Một item failed sẽ block tất cả item phía sau trong queue. Cần monitor proactively và set alert khi queue depth vượt ngưỡng.
8. Lỗi Thường Gặp
1. References không được activate Publish một page không tự động publish assets liên kết, Content Fragments, hay Experience Fragments được reference. Dùng panel References trong Sites console để kiểm tra và publish dependencies.
2. Queue backlog làm chậm publish Tree activation lớn hoặc bulk import có thể làm ngập queue. Chia nhỏ hoặc schedule vào off-peak.
3. Publish content chưa hoàn thiện Không có workflow review/approval → author vô tình publish page draft. Enforce workflow trên các content path quan trọng.
4. Quên activate templates và policies Page sẽ không render đúng trên publish nếu template, editable template policies, hoặc clientlibs chưa được deploy/activate. Luôn verify infrastructure content đồng bộ.
5. Credentials của transport user hết hạn Nếu password của transport user thay đổi trên publish nhưng không cập nhật trong agent config, replication fail mà không có cảnh báo rõ ràng. Dùng service user với non-expiring credentials.
6. Thiếu Dispatcher flush Content đã activate trên publish nhưng visitor vẫn thấy nội dung cũ vì Dispatcher cache chưa được invalidate. Đảm bảo flush agent được cấu hình và healthy.
7. Circular replication Cấu hình nhầm khiến author replicate sang publish và publish replicate ngược lại author → vòng lặp vô tận. Kiểm tra kỹ outbox/inbox path của reverse replication agent.
9. Checklist Cấu Hình Replication AEM 6.5
- Replication agent sử dụng dedicated service user, không dùng
admin -
transportPasswordđược encrypt (không plaintext trong JCR) - Flush agent đã cấu hình đúng Transport URI tới Dispatcher
- Test queue bằng cách activate một page thủ công, kiểm tra log agent
- Monitor queue tại
/etc/replication/agents.author/publish/queue - Có alert khi queue depth vượt ngưỡng hoặc có item failed
- References panel được kiểm tra trước khi publish page quan trọng
- Template và clientlibs đã được deploy lên publish trước khi publish content
Tham Khảo
- Replication (AEM 6.5) — Adobe Experience League
- Dispatcher Configuration — Adobe Experience League