자주 묻는 질문(FAQ)

일반적인 질문

Pub/Sub가 Firebase 클라우드 메시징(FCM) 또는 지원이 중단된 Google 클라우드 메시징(GCM)과 관련이 있나요?

관련이 있을 수도 있고 없을 수도 있습니다. 이 시스템은 모두 메시지를 전달하는 데 사용되지만 FCM은 최종 사용자 장치로 및 최종 사용자 장치에서 메시지를 전달하는 데 사용되고 Cloud Pub/Sub는 서버 간의 통신에 사용됩니다. FCM은 매우 많은 수의 전달 엔드포인트로 확장할 수 있지만 처리량(채널별 초당 메시지 수)은 낮습니다. Pub/Sub는 처리량에 제한이 없으며 더욱 일반적인 API를 제공합니다.

PubSubHubbub와 관련이 있나요?

아닙니다. Google 직원이 PubSubHubbub 개발에 긴밀하게 관여하긴 했지만, 이 제품의 장점인 RSS와 콘텐츠 배급은 Pub/Sub로 처리하는 일반적인 사용 사례가 아닙니다. 이름을 제외하면 두 제품은 비슷한 점이 거의 없습니다.

서로 다른 App Engine 모듈 간의 통신에 Pub/Sub를 이용할 수 있나요?

예. Pub/Sub를 사용하면 App Engine 애플리케이션의 다양한 모듈 간에, 또는 특수한 ACL 구성 없이 동일한 프로젝트 내의 다양한 애플리케이션 간에서도 메시지를 주고 받을 수 있습니다. 짧은 지연 시간 게시를 달성하려면 전역 변수로 초기화하여 게시자 클라이언트를 캐싱합니다.

Pub/Sub를 App Engine 이외의 모듈에서 사용할 수 있나요?

예. Google Compute Engine 또는 Google 이외의 플랫폼에서도 호스팅되는 애플리케이션에서 Pub/Sub를 사용할 수 있습니다. 시작하려면 Google Cloud Console 프로젝트만 있으면 됩니다. 지연 시간이 짧은 게시의 경우 게시자 클라이언트를 전역으로 설정하여 캐싱하는 것이 좋습니다.

App Engine과 Compute Engine 애플리케이션을 연결하려면 어떻게 해야 하나요?

Compute Engine에서 App Engine으로 진행되는 짧은 지연 시간 메시지 전송에는 내보내기 전달을 사용하세요. 가져오기 전달은 App Engine의 데이터를 수많은 Compute Engine 구독자에게 전달할 때 사용하세요.

Pub/Sub 측정 항목을 모니터링하려면 어떻게 해야 하나요?

이 자료를 참조하세요.

Pub/Sub는 Cloud KMS와 통합되어 있나요?

예. Pub/Sub 주제는 Cloud KMS의 키를 사용하여 메시지 콘텐츠를 보호하도록 구성할 수 있습니다. 자세한 내용은 고객 관리 암호화 키 사용을 참조하세요.

기술 관련 질문

메시지는 순서대로 전달되나요?

메시지에 동일한 순서 키가 있고 게시자가 동일한 리전으로 메시지를 보내는 경우 Pub/Sub 서비스는 메시지를 수신하는 순서대로 메시지를 전송할 수 있습니다. 자세한 내용은 메시지 순서 지정을 참조하세요.

사용량이 한도보다 훨씬 적은데 할당량 오류가 발생하는 이유는 무엇인가요?

할당량은 할당량 및 한도에서 설명하듯이 인증된 클라이언트와 관련된 프로젝트에 대해서만 적용됩니다. 할당량이 충분한 프로젝트와 관련된 서비스 계정이나 API_KEY를 사용 중인지 확인하세요. gcloud 명령줄은 특히 공유된 프로젝트를 사용하며 할당량은 매우 제한됩니다.

중복 메시지가 너무 많은 이유는 무엇인가요?

Pub/Sub는 최소 1회 메시지 전송을 보장하며, 따라서 간혹 메시지 중복이 발생하게 됩니다. 하지만 중복률이 높다면 클라이언트가 지정된 ack_deadline_seconds 안에 메시지를 확인하지 않아 Pub/Sub가 메시지 전송을 다시 시도하는 상황일 수 있습니다. 가져오기 구독은 측정항목 모니터링pubsub.googleapis.com/subscription/pull_ack_message_operation_count에서, 내보내기 구독은 pubsub.googleapis.com/subscription/push_request_count에서 이런 현상이 나타납니다. /response_code에서 상승한 expired 또는 webhook_timeout 값을 찾아보세요. 특히 소규모의 메시지가 많은 경우 이러한 현상이 나타납니다. 이는 Pub/Sub는 내부적으로 메시지를 일괄 처리할 수 있고 부분적으로 확인된 일괄 처리가 완전히 재전송될 수 있기 때문입니다.

또한 특정 메시지를 처리하는 코드 경로가 실패하고 Acknowledge 호출이 수행되지 않았거나, 푸시 엔드포인트가 반응하지 않거나 오류가 발생해 구독자가 일부 메시지를 확인하지 않아도 이런 현상이 발생합니다.

중복 메시지는 어떻게 감지하나요?

Pub/Sub는 고유한 'message_id'를 각 메시지에 할당하여 구독자가 받은 중복 메시지를 탐지하는 데 사용할 수 있습니다. 그러나 동일한 데이터에 대한 여러 게시 요청으로 인해 중복된 메시지는 감지할 수 없습니다. 이러한 메시지를 감지하려면 게시자가 제공해야 하는 고유한 메시지 식별자가 필요합니다. 자세한 내용은 Pub/Sub I/O를 참조하세요.