Vous consultez actuellement l'aide de la version:

Adobe Experience Manager (AEM) Assets utilise un proxy pour distribuer le traitement de certaines tâches.

Un proxy est une instance AEM spécifique (et parfois distincte) qui utilise des workers de proxy comme processeurs chargés de gérer une tâche et de produire un résultat. Un worker de proxy peut être utilisé pour de nombreuses tâches. Dans le cas d’un proxy AEM Assets, il peut être utilisé pour le chargement de ressources à des fins de rendu dans AEM Assets. Par exemple, le worker de proxy IDS utilise un serveur InDesign pour traiter les fichiers à utiliser dans AEM Assets.

Lorsque le proxy est une instance AEM distincte, il contribue à réduire la charge sur la ou les instances de création AEM. Par défaut, AEM Assets exécute les tâches de traitement des ressources dans la même JVM (externalisée via proxy) pour réduire la charge sur l’instance de création AEM.

Proxy (Accès HTTP)

Un proxy est disponible via le servlet HTTP lorsqu’il est configuré de sorte à accepter les tâches de traitement dans le répertoire suivant :

     /libs/dam/cloud/proxy

Ce servlet crée une tâche sling à partir des paramètres publiés. Elle est ensuite ajoutée à la file d’attente des tâches du proxy et connectée au worker de proxy approprié.

Opérations prises en charge

  • job
    Exigences : le paramètre jobevent doit être défini en tant que correspondance de valeur en série. Il est utilisé pour créer un événement pour un processeur de tâches.
    Résultat : ajoute une nouvelle tâche. Si l’opération réussit, un identifiant de tâche unique est renvoyé.
curl -u admin:admin -F":operation=job" -F"someproperty=xxxxxxxxxxxx" 
    -F"jobevent=serialized value map" http://localhost:4502/libs/dam/cloud/proxy
  • result
    Exigences : le paramètre jobid doit être défini.
    Résultat : renvoie une représentation JSON du nœud de résultats tel que créé par le processeur de tâches.
curl -u admin:admin -F":operation=result" -F"jobid=xxxxxxxxxxxx" 
    http://localhost:4502   /libs/dam/cloud/proxy
  • resource
    Exigences : le paramètre jobid doit être défini.
    Résultat : renvoie une ressource associée à la tâche concernée.
curl -u admin:admin -F":operation=resource" -F"jobid=xxxxxxxxxxxx" 
    -F"resourcePath=something.pdf" http://localhost:4502/libs/dam/cloud/proxy
  • remove
    Exigences : le paramètre jobid doit être défini.
    Résultats : supprime une tâche si elle est trouvée.
curl -u admin:admin -F":operation=remove" -F"jobid=xxxxxxxxxxxx" 
    http://localhost:4502/libs/dam/cloud/proxy

Worker de proxy

Un worker de proxy est un processeur chargé de gérer une tâche et de produire un résultat. Les workers résident sur l’instance de proxy et doivent mettre en œuvre sling JobProcessor pour être reconnus en tant que workers de proxy.

Remarque :

Le worker doit mettre en œuvre sling JobProcessor pour être reconnu en tant que worker de proxy.

API client

Remarque :

La documentation de référence pour l’API de proxy est disponible sous com.day.cq.dam.api.proxy.

JobService est disponible en tant que service OSGi qui prévoit des méthodes pour créer des tâches, supprimer des tâches et obtenir des résultats de ces tâches. La mise en œuvre par défaut de ce service (JobServiceImpl) utilise le client HTTP pour communiquer avec le servlet de proxy à distance.

Voici un exemple d’utilisation d’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);

Configurations du service cloud

Remarque :

La documentation de référence pour l’API de proxy est disponible sous com.day.cq.dam.api.proxy.

Les configurations de proxy et de worker de proxy sont disponibles via des configurations de services cloud et accessibles à partir de la console Outils d’AEM Assets, ou sous :

    /etc/cloudservices/proxy

Chaque worker de proxy devrait ajouter un nœud sous :

    /etc/cloudservices/proxy

pour fournir des détails sur des configurations de worker spécifiques (par exemple /etc/cloudservices/proxy/workername)

Remarque :

Pour en savoir plus, consultez les sections Configuration de worker de proxy du serveur InDesign et Configuration de services cloud.

Voici un exemple d’utilisation d’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");

Développement d’un worker de proxy personnalisé

Le worker de proxy IDS est un exemple de worker de proxy AEM Assets déjà prêt à l’emploi pour externaliser le traitement de ressources InDesign.

Vous pouvez également développer et configurer votre propre worker de proxy AEM Assets pour créer un worker spécialisé afin de distribuer et d’externaliser vos tâches de traitement AEM Assets.

Pour configurer votre propre worker de proxy personnalisé, vous devez effectuer les opérations suivantes :

  • Configurer et mettre en œuvre (à l’aide des événements Sling) :
    • une rubrique de tâche personnalisée ;
    • un gestionnaire d’événements de tâche personnalisé.
  • Puis utiliser l’API JobService pour :
    • distribuer votre tâche personnalisée au proxy ;
    • gérer votre tâche.
  • Si vous souhaitez utiliser le proxy à partir d’un processus, vous devez mettre en œuvre une étape externe personnalisée à l’aide de l’API WorkflowExternalProcess et de l’API JobService.

Le schéma et les étapes ci-dessous détaillent la procédure à suivre :

chlimage_1

Remarque :

Dans les étapes suivantes, des équivalents InDesign sont indiqués comme exemples de référence.

  1. Une tâche Sling est utilisée, ce qui signifie que vous devez définir une rubrique de tâche pour votre cas d’emploi.

    Par exemple, consultez IDSJob.IDS_EXTENDSCRIPT_JOB pour le worker de proxy IDS.

  2. L’étape externe est utilisée pour déclencher l’événement et attendre qu’il soit terminé en interrogeant l’identifiant. Vous devez développer votre propre étape pour mettre en œuvre de nouvelles fonctionnalités.

    Mettez en œuvre une API WorkflowExternalProcess, puis utilisez l’API JobService et votre rubrique de tâche pour préparer un événement de tâche et le distribuer à l’API JobService (un service OSGi).

    Par exemple, consultez INDDMediaExtractProcess.java pour le worker de proxy IDS.

  3. Mettez en œuvre un gestionnaire de tâches pour votre rubrique. Ce gestionnaire nécessite un développement afin d’effectuer votre action spécifique et est considéré comme la mise en œuvre du worker.

    Par exemple, consultez IDSJobProcessor.java pour le worker de proxy IDS.

  4. Utilisez ProxyUtil.java dans dam-commons. Cela vous permet de distribuer des tâches à des workers à l’aide du proxy de gestion des actifs numériques.

Remarque :

Le mécanisme de pool n’est pas fourni prêt à l’emploi par la structure de proxy AEM Assets.

L’intégration InDesign autorise l’accès à un pool de serveurs InDesign (IDSPool). Cette mise en pool est spécifique à l’intégration InDesign et ne fait pas partie de la structure de proxy AEM Assets.

Remarque :

Synchronisation des résultats :

Avec n instances utilisant le même proxy, le résultat de traitement reste avec le proxy. Il revient au client (auteur AEM) de demander le résultat à l’aide du même identifiant de tâche unique qui lui a été donné lors de la création de la tâche. Le proxy fait son travail et conserve le résultat disponible sur demande.

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne