Adobe Experience Manager (AEM) Assets utilizza un proxy per distribuire l'elaborazione per determinate attività.
Un proxy è un'istanza AEM specifica (e a volte separata) che utilizza i proxy worker come processori responsabili della gestione di un processo e della creazione di un risultato. Un lavoratore proxy può essere utilizzato per un'ampia gamma di attività. Nel caso di un proxy AEM Assets può essere utilizzato per caricare le risorse per il rendering all'interno AEM Assets. Ad esempio, il lavoratore proxy IDS utilizza un InDesign Server per elaborare i file da utilizzare in AEM Assets.
Se il proxy è un’istanza AEM separata, questo consente di ridurre il carico sulle istanze di authoring AEM. Per impostazione predefinita, AEM Assets esegue le attività di elaborazione delle risorse nella stessa JVM (esternalizzata tramite proxy) per ridurre il carico sull’istanza di creazione AEM.
Un proxy è disponibile tramite il servlet HTTP quando è configurato per accettare processi di elaborazione in: /libs/dam/cloud/proxy
. Questo servlet crea un processo di sling dai parametri inseriti. Questo viene aggiunto alla coda di processo del proxy e collegato al lavoratore proxy appropriato.
job
Requisiti: il parametro jobevent
deve essere impostato come una mappa di valore serializzata. Viene utilizzato per creare un Event
per un processore di processo.
Risultato: Aggiunge un nuovo processo. In caso di esito positivo, viene restituito un ID di processo univoco.
curl -u admin:admin -F":operation=job" -F"someproperty=xxxxxxxxxxxx"
-F"jobevent=serialized value map" http://localhost:4502/libs/dam/cloud/proxy
result
Requisiti: il parametro jobid
deve essere impostato.
Risultato: Restituisce una rappresentazione JSON del nodo risultato creato dal processore del processo.
curl -u admin:admin -F":operation=result" -F"jobid=xxxxxxxxxxxx"
http://localhost:4502 /libs/dam/cloud/proxy
resource
Requisiti: il parametro jobid deve essere impostato.
Risultato: Restituisce una risorsa associata al processo specificato.
curl -u admin:admin -F":operation=resource" -F"jobid=xxxxxxxxxxxx"
-F"resourcePath=something.pdf" http://localhost:4502/libs/dam/cloud/proxy
remove
Requisiti: il parametro jobid deve essere impostato.
Risultati: Rimuove un processo se viene trovato.
curl -u admin:admin -F":operation=remove" -F"jobid=xxxxxxxxxxxx"
http://localhost:4502/libs/dam/cloud/proxy
Un lavoratore proxy è un processore responsabile della gestione di un processo e della creazione di un risultato. I lavoratori risiedono nell'istanza proxy e devono implementare sling JobProcessor per essere riconosciuti come proxy.
Il lavoratore deve implementare sling JobProcessor per essere riconosciuto come lavoratore proxy.
JobService
è disponibile come servizio OSGi che fornisce metodi per creare processi, rimuovere processi e ottenere risultati da tali processi. L'implementazione predefinita di questo servizio (JobServiceImpl
) utilizza il client HTTP per comunicare con il servlet proxy remoto.
Esempio di utilizzo delle API:
@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);
La documentazione di riferimento per l'API proxy è disponibile in com.day.cq.dam.api.proxy
.
Sia le configurazioni di proxy che quelle di proxy sono disponibili tramite configurazioni di servizi cloud accessibili dalla console AEM Assets Tools o in /etc/cloudservices/proxy
. Ogni lavoratore proxy deve aggiungere un nodo in /etc/cloudservices/proxy
per i dettagli di configurazione specifici del lavoratore (ad esempio, /etc/cloudservices/proxy/workername
).
Per ulteriori informazioni, vedere Configurazione del Proxy Worker di Indesign Server e configurazione dei Cloud Services.
Esempio di utilizzo delle API:
@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");
Il lavoratore proxy IDS è un esempio di un lavoratore proxy AEM Assets già fornito out-of-the-box per esternalizzare l'elaborazione delle risorse Indesign.
È inoltre possibile sviluppare e configurare un proprio AEM Assets proxy Worker per creare un lavoratore specializzato per l'invio e l'outsourcing attività di elaborazione AEM Assets.
Per impostare un lavoratore proxy personalizzato è necessario:
Configurare e implementare (utilizzando Sling eventing):
Quindi utilizzate l'API JobService per:
Se desiderate utilizzare il proxy da un flusso di lavoro, dovete implementare un passaggio esterno personalizzato utilizzando l'API WorkflowExternalProcess e l'API JobService.
Nel diagramma seguente e nei passaggi viene descritto come procedere:
Nei passaggi seguenti, gli equivalenti di Indesign sono indicati come esempi di riferimento.
Viene utilizzato un processo Sling, pertanto è necessario definire un argomento del processo per il caso d'uso.
Ad esempio, vedere IDSJob.IDS_EXTENDSCRIPT_JOB
per il lavoratore proxy IDS.
Il passaggio esterno viene utilizzato per attivare l’evento e quindi attendere che sia terminato; questo viene fatto tramite un sondaggio sull'ID. Per implementare le nuove funzionalità è necessario sviluppare un proprio passaggio.
Implementate un WorkflowExternalProcess
, quindi utilizzate l'API JobService e l'argomento del processo per preparare un evento di processo e inviarlo a JobService (un servizio OSGi).
Ad esempio, vedere INDDMediaExtractProcess
.java per il lavoratore proxy IDS.
Implementare un gestore di processi per l’argomento. Questo gestore richiede lo sviluppo in modo che esegua l'azione specifica e sia considerato come implementazione del lavoratore.
Ad esempio, vedere IDSJobProcessor.java
per il lavoratore proxy IDS.
Utilizzare ProxyUtil.java
in dam-commons. Questo consente di inviare i processi ai lavoratori utilizzando il proxy DAM.
Ciò che il framework proxy AEM Assets non fornisce è il meccanismo del pool.
L'integrazione InDesign consente l'accesso a un pool di server indesign (IDSPool). Questo pool è specifico per l'integrazione Indesign e non fa parte del framework proxy AEM Assets .
Sincronizzazione dei risultati:
In caso di n istanze che utilizzano lo stesso proxy, il risultato dell'elaborazione rimane con il proxy. È compito del client (AEM Author) richiedere il risultato utilizzando lo stesso ID processo univoco fornito al client al momento della creazione del processo. Il proxy ottiene semplicemente il lavoro e mantiene il risultato pronto per essere richiesto.