이 문서에서는 주제에 게시된 메시지에서 흐름 제어를 사용하는 방법에 대해 설명합니다.
흐름 제어 정보
게시자 클라이언트는 해당 클라이언트가 Pub/Sub 서비스에 데이터를 전송할 수 있는 것보다 더 빠르게 메시지 게시를 시도할 수 있습니다. 클라이언트는 다음과 같은 다양한 요인에 따라 제한됩니다.
- 머신 CPU, RAM, 네트워크 용량
- 미해결 요청 수 및 사용 가능한 대역폭과 같은 네트워크 설정
- 각 게시 요청의 지연 시간은 주로 Pub/Sub 서비스, 클라이언트, Google Cloud 간의 네트워크 연결에 따라 결정됩니다.
게시 요청 비율이 이러한 한도를 초과하면 요청이 DEADLINE_EXCEEDED
오류와 함께 실패할 때까지 메모리에 누적됩니다. 수만 개의 메시지가 루프로 게시되어 밀리초 단위로 수천 개의 요청을 생성하는 경우 특히 그렇습니다.
Monitoring에서 서버 측 측정항목을 확인하면 이 문제를 진단할 수 있습니다. DEADLINE_EXCEEDED
로 실패한 요청은 확인할 수 없으며 성공한 요청만 확인할 수 있습니다. 성공한 요청 비율은 클라이언트 머신의 처리량 용량을 알려 주며 흐름 제어 구성을 위한 기준을 제공합니다.
흐름 속도 문제를 완화하려면 흐름 제어로 게시자 클라이언트를 구성하여 게시 요청 속도를 제한합니다. 미해결 요청에 할당된 최대 바이트 수와 허용되는 최대 미해결 메시지 수를 구성할 수 있습니다. 이러한 한도는 클라이언트 머신의 처리량 용량에 따라 설정합니다.
시작하기 전에
게시 워크플로를 구성하기 전에 다음 작업이 완료되어야 합니다.
- 주제 및 게시 워크플로 자세히 알아보기
- 주제 만들기
필요한 역할
흐름 제어를 사용하는 데 필요한 권한을 얻으려면 관리자에게 주제에 대한 Pub/Sub 게시자(roles/pubsub.publisher
) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
주제 및 구독을 만들거나 업데이트하려면 추가 권한이 필요합니다.
메시지에 흐름 제어 사용
게시자 흐름 제어는 Pub/Sub 클라이언트 라이브러리를 사용해서 다음 언어로 제공됩니다.
C++
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 C++ 설정 안내를 따르세요. 자세한 내용은 Pub/Sub C++ API 참고 문서를 확인하세요.
Go
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Go 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Go API 참고 문서를 참조하세요.
자바
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 자바 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Java API 참고 문서를 참조하세요.
Node.js
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Node.js API 참고 문서를 참조하세요.
Node.js
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Node.js API 참고 문서를 참조하세요.
Python
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Python API 참고 문서를 참조하세요.
Ruby
이 샘플을 시도하기 전에 빠른 시작: 클라이언트 라이브러리 사용의 Ruby 설정 안내를 따르세요. 자세한 내용은 Pub/Sub Ruby API 참고 문서를 참조하세요.