Ermitteln des Cluster-Masters

Problem

Ermitteln ob der Code auf dem Masterknoten in einem Cluster ausgeführt wird (wenn Clustering aktiviert ist).

Lösung

Verwenden Sie den Repository-Deskriptor „crx.cluster.master“. Beachten Sie jedoch, dass der Wert null sein könnte, wenn das Clustering für einige Versionen von CRX deaktiviert ist. Verwenden Sie den folgenden Code (funktioniert in jeder CRX-basierten App mit 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() %>
Hinweis:

Hinweis: In CQ5 gibt es einige Bibliotheken, welche mit der Implementierung von clusterabhängigen OSGi-Diensten helfen.Siehe hier.

** CRX 2.1 muss Hotfix 2.1.0.10 angewendet haben.

Hinweis:

Ab Version AEM 5.6.1 (CRX 2.4.30) wird eine neue Topologie-API verwendet. Details unter https://helpx.adobe.com/de/cq/kb/create-cluster-aware-osgi-service.html

 Adobe

Schneller und einfacher Hilfe erhalten

Neuer Benutzer?

Adobe MAX 2024

Adobe MAX
Die Konferenz für Kreative

14. bis 16. Oktober in Miami Beach und online

Adobe MAX

Die Konferenz für Kreative

14. bis 16. Oktober in Miami Beach und online

Adobe MAX 2024

Adobe MAX
Die Konferenz für Kreative

14. bis 16. Oktober in Miami Beach und online

Adobe MAX

Die Konferenz für Kreative

14. bis 16. Oktober in Miami Beach und online