No Adobe Experience Manager, os agentes de replicação são usados para:

  • Publicar (ativar) conteúdo de um autor em um ambiente de publicação.
  • Explicitamente liberar conteúdo do cache do Dispatcher.
  • Retornar a entrada de usuário (por exemplo, entrada de formulário) do ambiente de publicação para o ambiente do autor (sob controle do ambiente do autor).

Este artigo aborda as perguntas freqüentes relacionadas ao uso da funcionalidade de replicação do AEM. 

A replicação de uma página com muitos irmãos leva muito tempo 

Em vez de ter todas as páginas irmãs em um único nível, crie subníveis e distribua as páginas adequadamente. Ter cerca de 100 páginas é aceitável em um único nível. Para mais informações, consulte http://helpx.adobe.com/br/experience-manager/kb/ReplicationSiblingReordering.html.

Falha de replicação após a renovação de IP 

Reinicie a instância ou reconfigure o agente de replicação para usar o IP em vez do nome do host. Para mais informações, consulte http://helpx.adobe.com/br/experience-manager/kb/ReplicationFailureAfterNewIP.html.

Limite o acesso aos agentes de replicação 

É possível controlar essa configuração usando permissões de página de usuário / grupo em etc/Replication (ou seja, nó /etc/replation). Para mais informações, consulte http://helpx.adobe.com/br/experience-manager/kb/LimitAccessToReplicationAgents.html

Permissões de página não são replicadas na ativação do usuário 

As permissões de página não são replicadas porque elas são armazenadas nos nós para os quais o acesso é concedido, não com o usuário.

Em geral, as permissões de página não devem ser replicadas do autor para publicação e, por padrão, elas não são. Isso ocorre porque os direitos de acesso devem ser diferentes nesses dois ambientes. Portanto, é recomendável configurar ACLs em publicação separadamente do autor. Para mais informações, consulte http://helpx.adobe.com/br/experience-manager/kb/PagePermissionsNotReplicatedWithUser.html.

Use replicação reversa

Por padrão, apenas os nós cq:Page são replicados inversamente. Para qualquer outro nó, é necessário usar os dois últimos métodos, como uma implementação específica do projeto.

Existem três possibilidades:

  1. Use o SlingPostServlet (ou seja, não crie nenhum servlet de publicação personalizado ou POST.jsp para manipular as solicitações de entrada) para que ele acione implicitamente um PageEvent relacionado. Em seguida, defina um nome de propriedade "cq:distribute" e defina seu valor como "true" nos nós que você deseja replicar inversamente. Para implementar esta solução, é desnecessário gravar qualquer código. É possível usar o componente Formulário para definir todos os campos ocultos necessários.
  2. Use seu próprio código que acessa o repositório, modifique as propriedades "cq:lastModified" "cq:lastModifiedBy" e "cq:distribute." Os dados enviados podem ser controlados, o código interno grava os dados. Para implementar essa solução, é necessário gravar o código para o seu projeto.
  3. Use seu próprio código que chama o método replicar do serviço Replicator com opções para usar o modo de distribuição. A replicação é controlada a partir do seu código. Para implementar essa solução, grave o código específico para seu projeto.

Ativar para um agente de replicação específico

Você pode criar um objeto de ReplicationOptions com um AgentFilter:

ReplicationOptions opts = new ReplicationOptions();
opts.setFilter(new AgentFilter(){
public boolean isIncluded(final Agent agent) {
return "expectedAgentId".equals(agent.getId());
}
});

então use o método do Replicador replicate:

/**
* Dispara uma nova replicação com opções fornecidas.
*
* sessão do usuário da sessão @param
* @param type O tipo de replicação
* @param path O caminho especificou o conteúdo a ser replicado
* Opções @param Opções adicionais de replicação
* @throws ReplicationException se ocorrer um erro
* /
void replicate (Session session, ReplicationActionType type, String path,
Opções ReplicationOptions)

Para mais informações, consulte http://helpx.adobe.com/br/experience-manager/kb/CQ5ReplicateToSpecificAgents.html.

Implemente um ouvinte de evento de replicação 

  1. Crie uma classe que implemente interfaces EventHandler
  2. Adicione as seguintes anotações de SCR:
    @ scr.component metatype = "false" immediate="true"
  3. @scr.service interface="org.osgi.service.event.EventHandler" @scr.property name="event.topics" valueRef="ReplicationAction.EVENT_TOPIC"
  4. Implemente o método public void handleEvent (Event event).

Problemas da fila de replicação 

A replicação de conteúdo do CQ5 parece estar bloqueada

Os editores podem criar conteúdo, mas as páginas ativadas não são atualizadas na instância de publicação do CQ5.

Certifique-se de que cada agente de replicação esteja ativado e configurado corretamente

  1. Vá para a lista de agentes de replicação (/etc/replication/agents.author.html). 
  2. Para cada agente de replicação, faça o seguinte:
  • Certifique-se de que o agente esteja ativado. 
  • Verifique a conectividade com a instância de publicação clicando em Testar conexão. Se falhar, certifique-se de que, no nível da rede TCP, o servidor que hospeda a instância do autor do CQ possa se conectar à porta da instância de publicação.
  • Abra o log de replicação por meio do link "Exibir Log" e verifique quando a última tentativa de replicação foi bem-sucedida.
  • Observe o primeiro caminho de conteúdo na fila de replicação. Em seguida, tente limpar o primeiro elemento da fila de replicação. Em seguida, verifique se a replicação é retomada (começando com CQ5.4). Depois que ela for retomada, ative novamente o primeiro conteúdo especificado na fila.
  • Verifique com o CRX Content Explorer e certifique-se de que não haja nenhum nó /bin/receive na instância de publicação. Se houver, exclua-o.
  • Verifique com o CRX Content Explorer e certifique-se de que não haja um nó /bin/replicate na instância do autor. Se houver, exclua-o. 
  • Se os logs não mostrarem tentativas de replicação por alguns minutos, reinicie o pacote de replicação no console Felix. Se ainda não houver uma tentativa de replicação nos logs de replicação, reinicie o pacote Apache Sling Event Support:
    (http://<host>:<port>/system/console/bundles/org.apache.sling.event)

Privilégios de replicação ausentes após a atualização para o CQ 5.5 

Os privilégios de replicação são perdidos por causa da nova propriedade que foi introduzida no CQ 5.5 chamado crx:replicate.

Você pode localizar um anexo que seja um pacote com um script que corrija o problema. Basta executá-lo ANTES da atualização para o CQ5.5. Para obter informações, consulte http://helpx.adobe.com/br/experience-manager/kb/replication-privileges-missing-after-upgrade-to-cq-5-5.html.

CQ5.3: Os agentes de replicação falham devido ao limite máximo da fila de trabalhos

A causa deste problema é que o org.apache.sling.event.impl.JobEventHandler tem um limite padrão de 10 no número de filas de trabalhos que o sistema pode criar.

Resolução
Aumentar o número máximo de filas de trabalhos conforme necessário (o número de filas deve ser maior que o número de agentes de replicação configurados + o número de modelos de workflow)

  1. Faça o login no Felix Console (http://host:port/system/console/configMgr). 
  2. Vá para a guia Configuração no console Felix. 
  3. Selecione "Apache Sling Job Event Handler (org.apache.sling.event.impl.JobEventHandler)" na lista suspensa. 
  4. Altere o valor de"Max Job Queues". 
  5. Clique em Salvar.

Para mais informações, consulte http://helpx.adobe.com/br/experience-manager/kb/CQ53UnableToCreateJobQueueDueToMaxQueues.html.

Replicação de ACL

Não é mais possível replicar as ACLs (isto é, da instância do autor para a instância de publicação). Esse comportamento é por design.

As ACLs no CQ5 são centradas no conteúdo e não centradas no usuário como no CQ4. Normalmente existem direitos de acesso diferentes na publicação e no autor de uma perspectiva de conteúdo. Portanto, não faz mais sentido replicar as ACLs centradas no conteúdo.

Com um CUG (grupo fechado de usuários), a Adobe está trabalhando em uma solução pronta para uso. Nos pageprops de uma página, é possível proteger esta página (e todas as subpáginas) por meio de um CUG específico. Dessa forma, somente os usuários membros de um grupo específico tem acesso. A ACL na publicação é definida na própria publicação automaticamente se a página for ativada. Para mais informações, consulte http://helpx.adobe.com/br/experience-manager/kb/ACLReplication.html.

Aumento de conteúdo devido à replicação reversa 

O repositório cresce rapidamente (vários MB por minuto) e os logs mostram um erro sobre a replicação inversa.
Por exemplo, "WARN [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse Reverse replication not implemented for action: TEST. Caminho da caixa de saída remota: /var/replication/outbox."

Na instância de publicação, localize e exclua o item da caixa de publicação manualmente.

Para evitar esse problema no futuro, atualize para o CQ 5.6 ou não use o botão Testar Conexão no agente de replicação inversa.

Verifique com o suporte da Adobe para um hot fix existente se você estiver tendo problemas semelhantes com a replicação inversa. (Consulte também a lista recomendada de hot fixes para CQ 5.4.)

Para mais informações, consulte http://helpx.adobe.com/br/experience-manager/kb/content-grow-due-reverse-replication.html

Agente de replicação usa usuário anônimo como usuário de transporte 

Você tem um agente de replicação com os direitos corretos da ACL. No entanto, quando você tenta replicar com esse agente, você vê o seguinte em seus logs de replicação:

13.06.2007 12:34:36 *INFO * author: << Date: Wed, 13 Jun 2007 10:34:36 GMT 13.06.2007 12:34:36 *INFO * author: << error: java.security.AccessControlException: User 'anonymous' not allowed rights '---c-' on handle /content/playground/en 13.06.2007 12:34:36 *INFO * author: Message sent. 13.06.2007 12:34:36 *INFO * author: ---------------------------
Para resolver esse problema, negue o acesso de leitura de /system/replication/content para usuários anônimos em sua instância de destino. Para mais informações, consulte http://helpx.adobe.com/br/experience-manager/kb/ReplicationAgentUsingAnonUser.html.