비동기식 코드 실행

Cloud Tasks REST API, RPC API 또는 Google Cloud 클라이언트 라이브러리와 자바 11/17 App Engine 표준 서비스를 푸시 대상으로 사용하여 비동기 코드를 실행하는 큐 태스크입니다.

이 자바 11 예시에서는 애플리케이션 두 개를 사용합니다.

  • tasks은 로컬에서 명령줄 도구로 실행되어 태스크를 만들고 큐에 추가합니다.
  • tasks-handler 스프링 부팅 앱은 태스크 요청을 수신하는 엔드포인트 역할을 하여 Cloud Tasks 요청을 작업자로 처리합니다. 기본적으로 배포하는 App Engine 앱입니다.

시작하기 전에

샘플 앱을 배포하려면 다음 안내를 따르세요.

  1. 자바 SE 11 개발 키트(JDK)를 다운로드하여 설치합니다.
  2. Cloud Tasks 설정 안내를 완료합니다.
  3. Maven을 다운로드 및 설치하여 앱을 빌드, 배포, 관리합니다.
  4. gcloud CLI를 초기화하고 위에서 만든 프로젝트를 사용하도록 구성합니다.
  5. gcloud CLI app-engine-java 구성요소를 설치합니다.

    gcloud components install app-engine-java
    

샘플 설정

샘플을 다운로드하고 설치하려면 다음 단계를 따르세요.

  1. 샘플 애플리케이션 저장소를 로컬 머신에 클론합니다.

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    또는 ZIP 파일로 샘플을 다운로드하고 압축을 풉니다.

  2. tasks-handler 앱의 최상위 디렉터리로 이동합니다.

    cd java-docs-samples/appengine-java11/tasks-handler/

  3. App Engine에 tasks-handler 앱을 배포합니다.

    mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID

    PROJECT_ID를 클라우드 프로젝트의 ID로 바꿉니다. pom.xml 파일에 이미 프로젝트 ID가 지정된 경우 실행할 명령어에 -Dapp.deploy.projectId 속성을 포함하지 않아도 됩니다.

큐 만들기

Google Cloud CLI gcloud queues 명령어를 사용하여 큐를 만듭니다.

  1. 명령줄에 다음을 입력합니다.

    gcloud tasks queues create MY_QUEUE

  2. 큐가 초기화될 때까지 기다립니다. describe 명령어를 사용하여 큐 생성을 확인합니다.

    gcloud tasks queues describe MY_QUEUE

    다음과 같이 출력되어야 합니다.

    name: projects/PROJECT_ID/locations/LOCATION_ID/queues/MY_QUEUE // Note these ids
    rateLimits:
      maxBurstSize: 100
      maxConcurrentDispatches: 1000
      maxDispatchesPerSecond: 500.0
    retryConfig:
      maxAttempts: 100
      maxBackoff: 3600s
      maxDoublings: 16
      minBackoff: 0.100s
    state: RUNNING

큐에 태스크 추가

태스크를 로컬에 만들어서 설정한 큐에 추가한 다음 해당 태스크를 비동기 작업자에게 전달합니다.

  1. appengine-java11/tasks 디렉터리로 이동하여 앱을 컴파일합니다.

    cd ../tasks
    mvn package

  2. 머신에 다음 환경 변수를 설정합니다. 샘플 앱은 이러한 변수를 사용하여 태스크를 큐에 추가하는 요청을 만듭니다.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID // The project ID you set up above
    export LOCATION_ID=LOCATION_ID // The region in which your queue is running
    export QUEUE_ID=MY_QUEUE // The queue you created above
    참고: 다음 gcloud 명령어를 사용하여 위치 ID를 찾을 수 있습니다.
    gcloud tasks locations list

  3. 지정된 페이로드로 배포한 태스크 핸들러 컨트롤러의 /tasks/create 엔드포인트를 대상으로 태스크를 만듭니다. 페이로드는 작업자가 태스크 처리를 완료하는 데 필요한 요청의 모든 데이터가 될 수 있습니다. 이 예시에서 페이로드는 샘플에 하드 코딩되었으므로 이를 지정할 필요가 없습니다.

    mvn exec:java -Dexec.mainClass="com.example.task.CreateTask"
    
    태스크가 작업자에게 전달되고 작업자가 태스크를 처리하면 작업자는 Cloud Tasks 서비스에 2xx 성공 상태 코드를 반환하고 큐에서 태스크를 자동으로 삭제합니다.

  4. 작업자 서비스 로그를 표시하여 태스크가 수신되었는지 확인합니다.

    gcloud app logs read

다음 단계

Cloud Tasks 큐에 태스크를 추가했습니다. 계속해서 다음 페이지를 보고 Cloud Tasks를 알아보세요.