Cloud Tasks REST API, RPC API 또는 Google Cloud 클라이언트 라이브러리와 자바 11/17 App Engine 표준 서비스를 푸시 대상으로 사용하여 비동기 코드를 실행하는 큐 태스크입니다.
이 자바 11 예시에서는 애플리케이션 두 개를 사용합니다.
tasks
앱은 로컬에서 명령줄 도구로 실행되어 태스크를 만들고 큐에 추가합니다.tasks-handler
스프링 부팅 앱은 태스크 요청을 수신하는 엔드포인트 역할을 하여 Cloud Tasks 요청을 작업자로 처리합니다. 기본적으로 배포하는 App Engine 앱입니다.
시작하기 전에
샘플 앱을 배포하려면 다음 안내를 따르세요.
- 자바 SE 11 개발 키트(JDK)를 다운로드하여 설치합니다.
- Cloud Tasks 설정 안내를 완료합니다.
- Maven을 다운로드 및 설치하여 앱을 빌드, 배포, 관리합니다.
- gcloud CLI를 초기화하고 위에서 만든 프로젝트를 사용하도록 구성합니다.
gcloud CLI
app-engine-java
구성요소를 설치합니다.gcloud components install app-engine-java
샘플 설정
샘플을 다운로드하고 설치하려면 다음 단계를 따르세요.
샘플 애플리케이션 저장소를 로컬 머신에 클론합니다.
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
또는 ZIP 파일로 샘플을 다운로드하고 압축을 풉니다.tasks-handler
앱의 최상위 디렉터리로 이동합니다.cd java-docs-samples/appengine-java11/tasks-handler/
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
명령어를 사용하여 큐를 만듭니다.
명령줄에 다음을 입력합니다.
gcloud tasks queues create MY_QUEUE
큐가 초기화될 때까지 기다립니다.
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
큐에 태스크 추가
태스크를 로컬에 만들어서 설정한 큐에 추가한 다음 해당 태스크를 비동기 작업자에게 전달합니다.
appengine-java11/tasks
디렉터리로 이동하여 앱을 컴파일합니다.cd ../tasks mvn package
머신에 다음 환경 변수를 설정합니다. 샘플 앱은 이러한 변수를 사용하여 태스크를 큐에 추가하는 요청을 만듭니다.
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
지정된 페이로드로 배포한 태스크 핸들러 컨트롤러의
/tasks/create
엔드포인트를 대상으로 태스크를 만듭니다. 페이로드는 작업자가 태스크 처리를 완료하는 데 필요한 요청의 모든 데이터가 될 수 있습니다. 이 예시에서 페이로드는 샘플에 하드 코딩되었으므로 이를 지정할 필요가 없습니다.mvn exec:java -Dexec.mainClass="com.example.task.CreateTask"
태스크가 작업자에게 전달되고 작업자가 태스크를 처리하면 작업자는 Cloud Tasks 서비스에 2xx 성공 상태 코드를 반환하고 큐에서 태스크를 자동으로 삭제합니다.작업자 서비스 로그를 표시하여 태스크가 수신되었는지 확인합니다.
gcloud app logs read
다음 단계
Cloud Tasks 큐에 태스크를 추가했습니다. 계속해서 다음 페이지를 보고 Cloud Tasks를 알아보세요.
- 큐 및 태스크 관리를 사용하여 기존 태스크 및 큐를 삭제하는 등의 관리를 수행합니다.
- Cloud Tasks 큐 만들기 가이드에 따라 Cloud Tasks 큐를 만들고 구성하기
- gRPC API 참조에서 gRPC를 사용한 큐 관리에 대해 자세히 알아보기
- REST API 참조에서 REST를 사용한 큐 관리에 대해 자세히 알아보기
- Cloud Tasks 개요에서 Cloud Tasks 큐에 대해 자세히 알아보기