자산 프록시 개발

Adobe Experience Manager(AEM) 자산은 프록시를 사용하여 특정 작업에 대한 처리를 배포합니다.

프록시는 작업을 처리하고 결과를 만드는 처리자로 프록시 작업자를 사용하는 특정(또는 경우에 따라 분리) AEM 인스턴스입니다. 프록시 워커는 다양한 작업에 사용할 수 있습니다. AEM Assets 프록시의 경우 AEM Assets 내에서 렌더링하기 위해 에셋을 로드하는 데 사용할 수 있습니다. 예를 들어 IDS 프록시 작업자는 InDesign Server을 사용하여 AEM Assets에서 사용할 파일을 처리합니다.

프록시가 별도의 AEM 인스턴스인 경우 AEM 제작 인스턴스의 로드를 줄이는 데 도움이 됩니다. 기본적으로 AEM Assets은 동일한 JVM에서 자산 처리 작업(프록시를 통해 외부화됨)을 실행하여 AEM 작성 인스턴스에서의 로드를 줄입니다.

프록시(HTTP 액세스)

프록시는 다음 위치에서 처리 작업을 허용하도록 구성된 경우 HTTP 서블릿을 통해 사용할 수 있습니다./libs/dam/cloud/proxy. 이 서블릿은 게시된 매개 변수에서 슬링 작업을 만듭니다. 그러면 프록시 작업 큐에 추가되고 해당 프록시 워커에 연결됩니다.

지원되는 작업

  • job

    요구 사항:이 매개 변수는 직렬화된 값 맵으로 설정해야 jobevent 합니다. 작업 프로세서의 Event을(를) 만드는 데 사용됩니다.

    결과:새 작업을 추가합니다. 성공하면 고유한 작업 ID가 반환됩니다.

curl -u admin:admin -F":operation=job" -F"someproperty=xxxxxxxxxxxx"
    -F"jobevent=serialized value map" http://localhost:4502/libs/dam/cloud/proxy
  • result

    요구 사항:매개 변수를 설정해야 jobid 합니다.

    결과:작업 프로세서에서 만든 결과 노드의 JSON 표현을 반환합니다.

curl -u admin:admin -F":operation=result" -F"jobid=xxxxxxxxxxxx"
    http://localhost:4502   /libs/dam/cloud/proxy
  • resource

    요구 사항:매개 변수 jobid를 설정해야 합니다.

    결과:주어진 작업과 연관된 리소스를 반환합니다.

curl -u admin:admin -F":operation=resource" -F"jobid=xxxxxxxxxxxx"
    -F"resourcePath=something.pdf" http://localhost:4502/libs/dam/cloud/proxy
  • remove

    요구 사항:매개 변수 jobid를 설정해야 합니다.

    결과:찾은 경우 작업을 제거합니다.

curl -u admin:admin -F":operation=remove" -F"jobid=xxxxxxxxxxxx"
    http://localhost:4502/libs/dam/cloud/proxy

프록시 작업자

프록시 워커는 작업을 처리하고 결과를 만드는 프로세서입니다. 워커는 프록시 인스턴스에 상주하며 프록시 워커로 인식되도록 sling JobProcessor를 구현해야 합니다.

노트

워커는 프록시 워커로 인식하려면 sling JobProcessor를 구현해야 합니다.

클라이언트 API

JobService 작업 생성, 작업 제거 및 해당 작업에서 결과를 얻는 방법을 제공하는 OSGi 서비스로 사용할 수 있습니다. 이 서비스의 기본 구현(JobServiceImpl)은 HTTP 클라이언트를 사용하여 원격 프록시 서블릿과 통신합니다.

다음은 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);

클라우드 서비스 구성

노트

프록시 API에 대한 참조 설명서는 com.day.cq.dam.api.proxy에서 사용할 수 있습니다.

프록시 및 프록시 작업자 구성은 AEM Assets 도구 콘솔 또는 /etc/cloudservices/proxy 아래에서 액세스할 수 있는 클라우드 서비스 구성을 통해 사용할 수 있습니다. 각 프록시 작업자는 작업자별 구성 세부 정보(예: /etc/cloudservices/proxy/workername)에 대해 /etc/cloudservices/proxy 아래에 노드를 추가해야 합니다.

노트

자세한 내용은 Indesign Server 프록시 작업자 구성Cloud Services 구성을 참조하십시오.

다음은 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");

사용자 지정된 프록시 작업자 개발

IDS 프록시 작업자는 Indesign 에셋 처리를 아웃소싱하기 위해 이미 기본 제공 중인 AEM Assets 프록시 워커의 예입니다.

또한 고유한 AEM Assets 프록시 작업자를 개발하여 전문 작업자를 만들어 AEM Assets 처리 작업을 전달하고 아웃소싱할 수 있습니다.

사용자 지정 프록시 워커를 설정하려면 다음을 수행해야 합니다.

  • 설정 및 구현(Sling 이벤트 사용):

    • 사용자 정의 작업 주제
    • 사용자 지정 작업 이벤트 핸들러
  • 그런 다음 JobService API를 사용하여 다음을 수행합니다.

    • 사용자 지정 작업을 프록시에 전달합니다.
    • 작업 관리
  • 워크플로에서 프록시를 사용하려면 WorkflowExternalProcess API 및 JobService API를 사용하여 사용자 지정 외부 단계를 구현해야 합니다.

다음 다이어그램과 단계는 진행하는 방법에 대해 자세히 설명합니다.

chlimage_1-249

노트

다음 단계에서, Indesign에 상응하는 항목이 참조 예로 표시됩니다.

  1. Sling 작업이 사용되므로 사용 사례에 대한 작업 항목을 정의해야 합니다.

    예를 들어 IDS 프록시 워커에 대한 IDSJob.IDS_EXTENDSCRIPT_JOB을(를) 참조하십시오.

  2. 외부 단계는 이벤트를 트리거한 다음 완료될 때까지 기다리는 데 사용됩니다.이것은 id에서 폴링하여 수행됩니다. 새 기능을 구현하려면 자신만의 단계를 개발해야 합니다.

    WorkflowExternalProcess을(를) 구현한 다음 JobService API와 작업 항목을 사용하여 작업 이벤트를 준비하고 JobService(OSGi 서비스)에 전달합니다.

    예를 들면 IDS 프록시 워커에 대한 INDDMediaExtractProcess.java를 참조하십시오.

  3. 항목에 대한 작업 핸들러를 구현합니다. 이 처리기는 특정 작업을 수행하고 작업자 구현으로 간주되도록 개발을 필요로 합니다.

    예를 들어 IDS 프록시 워커에 대한 IDSJobProcessor.java을(를) 참조하십시오.

  4. dam-commons에서 ProxyUtil.java을 사용합니다. 이렇게 하면 dam 프록시를 사용하여 작업자에게 작업을 전달할 수 있습니다.

노트

AEM Assets 프록시 프레임워크에서 제공하지 않는 것은 풀 메커니즘입니다.

InDesign 통합을 통해 IDSPool(indesign 서버 풀)에 액세스할 수 있습니다. 이 풀링은 AEM Assets 프록시 프레임워크의 일부가 아니라 Indesign 통합에만 적용됩니다.

노트

결과 동기화:

동일한 프록시를 사용하는 인스턴스가 없으면 처리 결과는 프록시에 유지됩니다. 작업 생성 시 클라이언트에 주어진 동일한 고유 작업 ID를 사용하여 결과를 요청하는 것은 클라이언트(AEM 작성자)의 작업입니다. 프록시는 작업을 완료하고 결과를 요청할 준비가 되도록 유지합니다.

이 페이지에서는

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now