メッセージが pull サブスクライバーに配信されると、サブスクライバーは確認応答期限内にメッセージを処理し、確認応答(ack)する必要があります。それ以外の場合、サブスクライバーは、確認応答期限を変更するための呼び出しで期限を延長する必要があります。
Pub/Sub の高レベル クライアント ライブラリは、まだ確認応答されていないメッセージの期限を自動的に延長する機能として、リース管理を提供します。デフォルトでは、クライアント ライブラリは modifyAckDeadline リクエストを定期的に発行することで期限を 1 時間延長できます。Python、Go、Java、Net 用の高レベル クライアント ライブラリは、確認応答遅延の 99 パーセンタイルを使用して、各拡張機能の長さを決定します。
リース管理を使用すると、サブスクリプション レベルのプロパティの構成よりも、メッセージの確認応答期限をより細かく制御できます。サブスクリプション レベルの確認応答期限のみを使用している場合は、低い値と高い値のトレードオフのバランスを取る必要があります。値が小さいと、重複が発生する可能性が高く、値が大きいと、失敗したメッセージの再配信が遅れます。特にメッセージごとに予想される処理時間が大きく異なる場合、適切な値を決定するのは難しい場合があります。
確認応答期限など、サブスクリプションのプロパティの詳細については、サブスクリプションのプロパティをご覧ください。
リース管理の構成
高レベルのクライアント ライブラリでは、次のプロパティを構成してリース管理を制御できます。
確認応答期間の延長。
modify acknowledgment deadline
リクエストを使用して、メッセージの確認応答期限を延長できる最大時間。このプロパティを使用すると、サブスクライバー クライアントがメッセージを処理する期間を指定できます。確認応答拡張ごとの最大期間。各
modify acknowledgment deadline
リクエストの確認応答期限を延長する最大時間。このプロパティを使用すると、Pub/Sub がメッセージの再配信に要する時間を定義できます。再配信は、メッセージを処理する最初のサブスクライバーがクラッシュするか、正常でなくなり、modify acknowledgment deadline
リクエストを送信できなくなった場合に発生します。確認応答拡張ごとの最小期間。各
modify acknowledgment deadline
リクエストの確認応答期限を延長する最小時間。このプロパティを使用すると、メッセージの再配信の前に経過する最小時間を指定できます。
1 回限りの配信を有効にしない限り、確認応答の期限が保証されるわけではありません。
確認応答期限の手動管理
単項 pull または低レベルのクライアント ライブラリを使用する際のメッセージの有効期限と再配信を回避するには、modify acknowledgment deadline
リクエストを使用して確認応答期限を延長します。例外は、単項 pull を使用するリース管理を提供する Go と C の高レベル クライアント ライブラリです。リース管理を使用した単項 pull については、次のサンプルをご覧ください。
C#
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、Pub/Sub C# API のリファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、Pub/Sub Java API のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、Pub/Sub Node.js API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Python の設定手順を実施してください。詳細については、Pub/Sub Python API のリファレンス ドキュメントをご覧ください。
Ruby
このサンプルを試す前に、クイックスタート: クライアント ライブラリの使用の Ruby の設定手順を実施してください。詳細については、Pub/Sub Ruby API のリファレンス ドキュメントをご覧ください。
次のステップ
サブスクリプションに構成できるその他の配信オプションについて確認します。