Asset-Proxy-Entwicklung assets-proxy-development
Adobe Experience Manager Assets verwendet einen Proxy, um die Verarbeitung für bestimmte Aufgaben zu verteilen.
Ein Proxy ist eine bestimmte (und manchmal auch separate) Experience Manager -Instanz, die Proxy Worker als Prozessoren verwendet, die für die Verarbeitung eines Auftrags und die Erstellung eines Ergebnisses verantwortlich sind. Ein Proxy-Worker kann für eine Vielzahl von Aufgaben verwendet werden. Im Falle einer Experience Manager Assets-Proxy Dieser kann zum Laden von Assets für die Wiedergabe in Experience Manager Assets. Beispiel: die IDS-Proxy-Worker verwendet eine InDesign Server zur Verarbeitung von Dateien zur Verwendung in Experience Manager Assets.
Wenn der Proxy eine separate Experience Manager-Instanz ist, wird die Last für die Experience Manager-Autorinstanz(en) reduziert. Standardmäßig Experience Manager Assets führt die Asset-Verarbeitungsaufgaben in derselben JVM aus (über Proxy externalisiert), um die Belastung der Experience Manager Authoring-Instanz.
Proxy (HTTP-Zugriff) proxy-http-access
Proxys, deren Konfiguration Verarbeitungsaufträge zulässt, sind über das HTTP-Servlet verfügbar: /libs/dam/cloud/proxy
. Dieses Servlet erstellt einen Sling-Auftrag aus den veröffentlichten Parametern. Der Auftrag wird dann der Proxy-Auftragswarteschlange hinzugefügt und mit dem entsprechenden Proxy-Worker verbunden.
Unterstützte Vorgänge supported-operations
-
job
Anforderungen: Der Parameter
jobevent
muss als serialisierte Wertezuordnung festgelegt werden. Damit wird einEvent
für einen Auftragsprozessor erstellt.Ergebnis: Fügt einen neuen Auftrag hinzu. Wenn der Vorgang erfolgreich ist, wird eine eindeutige Auftrags-ID zurückgegeben.
curl -u admin:admin -F":operation=job" -F"someproperty=xxxxxxxxxxxx"
-F"jobevent=serialized value map" http://localhost:4502/libs/dam/cloud/proxy
-
result
Anforderungen: Der Parameter
jobid
muss festgelegt werden.Ergebnis: Gibt die JSON-Darstellung des Ergebnisknotens zurück, wie er durch den Auftragsprozessor erstellt wurde.
curl -u admin:admin -F":operation=result" -F"jobid=xxxxxxxxxxxx"
http://localhost:4502 /libs/dam/cloud/proxy
-
resource
Anforderungen: Der Parameter „jobid“ must festgelegt sein.
Ergebnis: Gibt eine Ressource zurück, die dem jeweiligen Auftrag zugeordnet ist.
curl -u admin:admin -F":operation=resource" -F"jobid=xxxxxxxxxxxx"
-F"resourcePath=something.pdf" http://localhost:4502/libs/dam/cloud/proxy
-
remove
Anforderungen: Der Parameter „jobid“ must festgelegt sein.
Ergebnisse:: Entfernt einen gefundenen Auftrag.
curl -u admin:admin -F":operation=remove" -F"jobid=xxxxxxxxxxxx"
http://localhost:4502/libs/dam/cloud/proxy
Proxy-Worker proxy-worker
Ein Proxy-Worker ist ein Prozessor, der für die Verarbeitung von Aufträgen und die Generierung von Ergebnissen zuständig ist. Worker befinden sich auf der Proxy-Instanz und müssen sling JobProcessor implementieren, damit sie als Proxy-Worker erkannt werden.
Client-API client-api
JobService
ist als OSGi-Dienst verfügbar, der Methoden zur Erstellung und Entfernung von Aufträgen und dem Abruf von Ergebnissen aus den Aufträgen bereitstellt. Die Standardimplementierung des Service (JobServiceImpl
) verwendet den HTTP-Client für die Kommunikation mit dem Remote-Proxy-Servlet.
Nachstehend finden Sie ein Beispiel für die API-Verwendung:
@Reference
JobService proxyJobService;
// to create a new job
final Hashtable props = new Hashtable();
props.put("someproperty", "some value");
props.put(JobUtil.PROPERTY_JOB_TOPIC, "myworker/job"); // this is an identifier of the worker
final String jobId = proxyJobService.addJob(props, new Asset[]{asset});
// to check status (returns JobService.STATUS_FINISHED or JobService.STATUS_INPROGRESS)
int status = proxyJobService.getStatus(jobId)
// to get the result
final String jsonString = proxyJobService.getResult(jobId);
// to remove job and cleanup
proxyJobService.removeJob(jobId);
Cloud Service-Konfigurationen cloud-service-configurations
com.day.cq.dam.api.proxy
.Sowohl Proxy- als auch Proxy Worker-Konfigurationen sind über Cloud Services-Konfigurationen verfügbar, auf die über die Experience Manager Assets Instrumente Konsole oder unter /etc/cloudservices/proxy
. Von jedem Proxy-Worker wird erwartet, dass er einen Knoten unter /etc/cloudservices/proxy
für Worker-spezifische Konfigurationsdetails (z. B. /etc/cloudservices/proxy/workername
) hinzufügt.
Nachstehend finden Sie ein Beispiel für die API-Verwendung:
@Reference(policy = ReferencePolicy.STATIC)
ProxyConfig proxyConfig;
// to get proxy config
Configuration cloudConfig = proxyConfig.getConfiguration();
final String value = cloudConfig.get("someProperty", "defaultValue");
// to get worker config
Configuration cloudConfig = proxyConfig.getConfiguration("workername");
final String value = cloudConfig.get("someProperty", "defaultValue");
Entwickeln eines benutzerdefinierten Proxy-Workers developing-a-customized-proxy-worker
Die IDS-Proxy-Worker ist ein Beispiel für eine Experience Manager Assets-Proxy Worker, der bereits standardmäßig bereitgestellt wird, um die Verarbeitung von InDesign-Assets auszulagern.
Sie können auch Ihre eigenen Experience Manager Assets-Proxy Worker zum Erstellen eines spezialisierten Sekundärs zum Senden und Outsourcing von Experience Manager Asset-Verarbeitungsaufgaben.
Für die Einrichtung eines eigenen benutzerdefinierten Proxy-Workers müssen Sie die folgenden Aufgaben ausführen:
-
Einrichten und Implementieren (mit Sling Eventing):
- ein benutzerdefiniertes Auftragsthema
- einen benutzerdefinierten Auftragsereignis-Handler
-
Verwenden Sie dann die JobService-API, um:
- benutzerdefinierten Auftrag an Proxy senden
- Auftrag verwalten
-
Wenn Sie den Proxy aus einem Workflow verwenden möchten, müssen Sie einen benutzerdefinierten externen Schritt mithilfe der WorkflowExternalProcess-API und der JobService-API implementieren.
Das folgende Diagramm und die folgenden Schritte beschreiben den weiteren Ablauf:
-
Da ein Sling-Auftrag verwendet wird, müssen Sie ein Auftragsthema für Ihren Anwendungsfall definieren.
Als Beispiel dient
IDSJob.IDS_EXTENDSCRIPT_JOB
für den IDS-Proxy-Worker. -
Mit dem externen Schritt wird das Ereignis ausgelöst, anschließend wird auf den Abschluss gewartet. Hierfür wird die ID abgerufen. Sie müssen einen eigenen Schritt entwickeln, um eine neue Funktionalität zu implementieren.
Implementieren Sie einen
WorkflowExternalProcess
. Bereiten Sie dann mit der JobService-API und Ihrem Auftragsthema ein Auftragsereignis vor und senden Sie es an den JobService (einen OSGi-Dienst).Als Beispiel dient
INDDMediaExtractProcess
.java für den IDS-Proxy-Worker. -
Implementieren Sie einen Auftrags-Handler für Ihr Thema. Der Handler muss entwickelt werden, damit er die von Ihnen gewünschte spezifische Aktion ausführt und als Worker-Implementierung betrachtet wird.
Als Beispiel dient
IDSJobProcessor.java
für den IDS-Proxy-Worker. -
Verwenden Sie
ProxyUtil.java
in dam-commons. Damit können Sie Aufträge mit dem dam-Proxy an Worker senden.