Assets-Proxy-Entwicklung assets-proxy-development
Adobe Experience Manager Assets verwendet einen Proxy, um die Verarbeitung bestimmter Aufgaben zu verteilen.
Ein Proxy ist eine bestimmte (und gelegentlich separate) Experience Manager-Instanz, die Proxy-Worker als Prozessoren verwendet, um Aufträge zu bearbeiten und Ergebnisse zu generieren. Ein Proxy-Worker kann für eine Vielzahl von Aufgaben verwendet werden. Assets-Proxys können Assets laden, die in Assets gerendert werden sollen. Beispielsweise verarbeitet der IDS-Proxy-Worker Dateien, die in Assets verwendet werden sollen, mit einem Adobe InDesign-Server.
Wenn der Proxy eine separate Experience Manager-Instanz ist, wird die Last für die Experience Manager-Autorinstanz(en) reduziert. Standardmäßig führt Assets die Aufgaben zur Asset-Verarbeitung in derselben JVM (externalisiert über Proxy) aus, um die Last für die Experience Manager-Autorinstanz zu reduzieren.
Proxy (HTTP-Zugriff) proxy-http-access
Ein Proxy ist über das HTTP-Servlet verfügbar, wenn die Konfiguration Verarbeitungsaufträge unter /libs/dam/cloud/proxy
zulässt. Dieses Servlet erstellt einen Sling-Auftrag aus den geposteten 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 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
Proxy- und Proxy-Worker-Konfigurationen sind über Cloud-Service-Konfigurationen verfügbar, die in der Tools-Konsole von Assets verfügbar sind 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
Der IDS-Proxy-Worker ist ein Beispiel für einen Assets-Proxy-Worker, der vorkonfiguriert bereitgestellt wird, um die Verarbeitung der InDesign-Assets auszulagern.
Sie können auch einen eigenen Assets-Proxy-Worker für entwickeln und konfigurieren. Dieser spezialisierte Worker kann die Verarbeitungsaufgaben von Assets verteilen und auslagern.
Für die Einrichtung eines eigenen benutzerdefinierten Proxy-Workers müssen Sie die folgenden Aufgaben ausführen:
-
Einrichten und Implementieren (mit Sling Eventing):
- ein Thema für den benutzerdefinierten Auftrag
- einen Ereignis-Handler für benutzerdefinierte Aufträge
-
Verwenden Sie dann die JobService-API, um:
- benutzerdefinierten Auftrag an Proxy senden
- Ihren Auftrag zu 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. Entwickeln Sie einen eigenen Schritt, 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.