Detectar el Patrón de Cluster

Problema

Detección de si el código se está ejecutando en el nodo maestro de un clúster (si la agrupación en clústeres está activada).

Solución

Utilice el descriptor del repositorio "crx.cluster.master. Pero tenga en cuenta que el valor podría ser nulo si el clustering está deshabilitado en algunas versiones de CRX. Utilice el siguiente código (funciona en cualquier aplicación basada en CRX usando CRX2.1.0.10+.)

package sample.demo;
public interface ClusterService {
public boolean isMaster();
}
package sample.demo;

import sample.demo.ClusterService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Deactivate;
import org.apache.felix.scr.annotations.Service;
import org.apache.felix.scr.annotations.Reference;
import javax.jcr.Repository;

@Component(metatype = false)
@Service(value = ClusterService.class)

public class MyClusterAwareService implements ClusterService {
    private static final Logger LOGGER = LoggerFactory.getLogger(MyClusterAwareService.class);

    @Reference
    private Repository repository;
    
    public boolean isMaster() {
       String v = repository.getDescriptor("crx.cluster.master");
        boolean isOnMaster = v == null || Boolean.parseBoolean(v);
        LOGGER.info("MyClusterAwareService isMaster" + isOnMaster );
        return isOnMaster;
    }
    
    @Activate
    protected void activate() {
        LOGGER.info("service activated" );
    }
    @Deactivate
    protected void deactivate() {
        LOGGER.info ("service deactivated");
    }
}
<%
sample.demo.ClusterService clusterService =  sling.getService(sample.demo.ClusterService.class);
%>
Am I master <%= clusterService.isMaster() %>
Nota:

Nota: En CQ5 hay algunas bibliotecas que ayudan a implementar servicios OSGi con conocimiento de cluster.Vea aquí.

** CRX 2.1 debe tener la corrección 2.1.0.10 aplicada

Nota:

AEM 5.6.1 (CRX 2.4.30) en adelante utilizan la nueva API de topología. Detalles en http://helpx.adobe.com/es/cq/kb/create-cluster-aware-osgi-service.html

 Adobe

Obtén ayuda de forma más rápida y sencilla

¿Nuevo usuario?

Adobe MAX 2024

Adobe MAX

The Creativity Conference

Del 14 al 16 de octubre en Miami Beach y en línea

Adobe MAX 2024

Adobe MAX

The Creativity Conference

Del 14 al 16 de octubre en Miami Beach y en línea