Détecter le Cluster Master

Problème

Comment détecter si le code est exécuté sur le nœud maître dans une grappe (si la mise en grappe est activée).

Solution

Utilisez le descripteur de référentiel « crx.cluster.master ». Notez toutefois que la valeur peut être nulle si la mise en grappe est désactivée sur certaines versions de CRX. Utilisez le code suivant (qui s'exécute dans n'importe quelle application basée sur CRX à l'aide de CRX 2.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() %>
Remarque :

Remarque : Dans CQ5, certaines bibliothèques vous aident à implémenter des services OSGi basés sur le groupe.Voir ici.

** CRX 2.1 doit avoir le correctif 2.1.0.10 appliqué

Remarque :

AEM 5.6.1 (CRX 2.4.30) et ultérieur utilisent la nouvelle topologie API. Plus d'informations sur https://helpx.adobe.com/fr/cq/kb/create-cluster-aware-osgi-service.html

 Adobe

Recevez de l’aide plus rapidement et plus facilement

Nouvel utilisateur ?

Adobe MAX 2024

Adobe MAX
La conférence sur la créativité

Du 14 au 16 octobre à Miami Beach et en ligne

Adobe MAX

La conférence sur la créativité

Du 14 au 16 octobre à Miami Beach et en ligne

Adobe MAX 2024

Adobe MAX
La conférence sur la créativité

Du 14 au 16 octobre à Miami Beach et en ligne

Adobe MAX

La conférence sur la créativité

Du 14 au 16 octobre à Miami Beach et en ligne