Show Menu
TEMAS×

Desarrollo de proxy de recursos

Recursos Adobe Experience Manager (AEM) utiliza un proxy para distribuir el procesamiento para determinadas tareas.
Un proxy es una instancia específica (y a veces independiente) de AEM que utiliza los trabajadores proxy como procesadores responsables de gestionar un trabajo y crear un resultado. Un trabajador proxy puede utilizarse para una amplia variedad de tareas. En el caso de un proxy de Recursos AEM, esto se puede utilizar para cargar recursos para procesarlos en Recursos AEM. Por ejemplo, el trabajador proxy IDS utiliza un servidor de InDesign para procesar archivos que se utilizarán en Recursos AEM.
Cuando el proxy es una instancia de AEM independiente, esto ayuda a reducir la carga en las instancias de creación de AEM. De forma predeterminada, AEM Assets ejecuta las tareas de procesamiento de recursos en el mismo JVM (externalizado mediante proxy) para reducir la carga en la instancia de creación de AEM.

Proxy (acceso HTTP)

Hay un proxy disponible a través del servlet HTTP cuando está configurado para aceptar trabajos de procesamiento en: /libs/dam/cloud/proxy . Este servlet crea un trabajo de sling a partir de los parámetros publicados. A continuación, se agrega a la cola de trabajos proxy y se conecta al trabajador proxy correspondiente.

Operaciones admitidas

  • job
    Requisitos : el parámetro jobevent debe configurarse como un mapa de valores serializados. Se utiliza para crear un Event para un procesador de trabajo.
    Resultado : Añade un nuevo trabajo. Si se realiza correctamente, se devuelve una ID de trabajo única.
curl -u admin:admin -F":operation=job" -F"someproperty=xxxxxxxxxxxx"
    -F"jobevent=serialized value map" http://localhost:4502/libs/dam/cloud/proxy

  • result
    Requisitos : se jobid debe establecer el parámetro.
    Resultado : Devuelve una representación JSON del nodo de resultado tal como la creó el procesador de trabajos.
curl -u admin:admin -F":operation=result" -F"jobid=xxxxxxxxxxxx"
    http://localhost:4502   /libs/dam/cloud/proxy

  • resource
    Requisitos : se debe establecer el parámetro jobid.
    Resultado : Devuelve un recurso asociado al trabajo dado.
curl -u admin:admin -F":operation=resource" -F"jobid=xxxxxxxxxxxx"
    -F"resourcePath=something.pdf" http://localhost:4502/libs/dam/cloud/proxy

  • remove
    Requisitos : se debe establecer el parámetro jobid.
    Resultados : Quita un trabajo si se encuentra.
curl -u admin:admin -F":operation=remove" -F"jobid=xxxxxxxxxxxx"
    http://localhost:4502/libs/dam/cloud/proxy

Proxy Worker

Un trabajador proxy es un procesador responsable de gestionar un trabajo y crear un resultado. Los trabajadores residen en la instancia de proxy y deben implementar sling JobProcessor para ser reconocidos como un trabajador proxy.
El programa de trabajo debe implementar sling JobProcessor para ser reconocido como un programa de trabajo proxy.

API de cliente

JobService está disponible como un servicio OSGi que proporciona métodos para crear trabajos, eliminar trabajos y obtener resultados de dichos trabajos. La implementación predeterminada de este servicio ( JobServiceImpl ) utiliza el cliente HTTP para comunicarse con el servlet proxy remoto.
A continuación se muestra un ejemplo del uso de 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);

Configuraciones de Cloud Service

La documentación de referencia para la API de proxy está disponible en com.day.cq.dam.api.proxy .
Tanto las configuraciones de trabajo proxy como las de proxy están disponibles mediante configuraciones de servicios en la nube, ya que se puede acceder a ellas desde la consola de herramientas de AEM Assets o desde /etc/cloudservices/proxy . Se espera que cada trabajador proxy agregue un nodo debajo /etc/cloudservices/proxy para los detalles de configuración específicos del trabajador (por ejemplo, /etc/cloudservices/proxy/workername ).
Consulte Configuración del trabajo proxy de Indesign Server y configuración de Cloud Services para obtener más información.
A continuación se muestra un ejemplo del uso de 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");

Desarrollo de un trabajador proxy personalizado

El trabajador proxy IDS es un ejemplo de un trabajador proxy de Recursos AEM que ya se ha incorporado para externalizar el procesamiento de recursos de Indesign.
También puede desarrollar y configurar su propio trabajador proxy de Recursos AEM para crear un trabajador especializado que distribuya y externalice sus tareas de procesamiento de Recursos AEM.
La configuración de su propio trabajador proxy personalizado requiere que:
  • Configure e implemente (mediante eventos Sling):
    • un tema de trabajo personalizado
    • un controlador de evento de trabajo personalizado
  • A continuación, utilice la API de JobService para:
    • enviar el trabajo personalizado al proxy
    • administrar su trabajo
  • Si desea utilizar el proxy desde un flujo de trabajo, debe implementar un paso externo personalizado mediante la API WorkflowExternalProcess y la API JobService.
El diagrama y los pasos siguientes detallan cómo proceder:
En los pasos siguientes, los equivalentes de Indesign se indican como ejemplos de referencia.
  1. Se utiliza un trabajo de Sling, por lo que debe definir un tema de trabajo para el caso de uso.
    Como ejemplo, consulte IDSJob.IDS_EXTENDSCRIPT_JOB para el programa de trabajo proxy IDS.
  2. El paso externo se utiliza para desencadenar el evento y luego esperar hasta que finalice; esto se realiza sondeando en el identificador. Debe desarrollar su propio paso para implementar la nueva funcionalidad.
    Implemente un WorkflowExternalProcess , luego utilice la API de JobService y el tema de su trabajo para preparar un evento de trabajo y enviarlo al JobService (un servicio OSGi).
    Por ejemplo, consulte INDDMediaExtractProcess .java para el programa de trabajo proxy IDS.
  3. Implemente un controlador de trabajo para el tema. Este controlador requiere desarrollo para que realice la acción específica y se considere la implementación de trabajador.
    Como ejemplo, consulte IDSJobProcessor.java para el programa de trabajo proxy IDS.
  4. Hacer uso de ProxyUtil.java en dam-commons. Esto le permite enviar trabajos a los trabajadores mediante el proxy de la presa.
Lo que el marco proxy de Recursos AEM no proporciona de forma predeterminada es el mecanismo de agrupación.
La integración de InDesign permite el acceso a un grupo de servidores de indesign (IDSPool). Este agrupamiento es específico de la integración de Indesign y no forma parte del marco proxy de AEM Assets.
Sincronización de resultados:
Con n instancias que utilizan el mismo proxy, el resultado de procesamiento permanece con el proxy. Es tarea del cliente (AEM Author) solicitar el resultado utilizando la misma ID de trabajo única que se ha dado al cliente en la creación de un trabajo. El proxy simplemente realiza el trabajo y mantiene el resultado listo para ser solicitado.