2017-09-28 11 views
0

私は現在google-cloud-pubsubライブラリの0.24.0-betaバージョンに切り替えましたが、メッセージの了解期限を変更する方法を見つけることができません。以前のバージョンではmodifyAckDeadline()がありました。新しいバージョンでは可能ですか?非同期サブスクライバでackの期限を変更します

なぜ私はそれを試しているのかを知るために:私が達成したいのは、処理に失敗したメッセージが10分後に再配信され、そのような再試行が失敗したXの後にのみ応答する再試行メカニズムです。

答えて

1

処理に時間がかかるためにリースをメッセージに残す目的で、新しいバージョンのサブスクライバライブラリは、あなたのためにバックグラウンドでmodifyAckDeadlineを呼び出します。メッセージが未処理の場合(つまり、MessageReceiverがメッセージと共に受信するAckReplyConsumerでack()またはnack()を呼び出していない場合)、ライブラリ自体はメッセージのmodifyAckDeadlineを呼び出します。

あなたの目標は少し異なります:modifyAckDeadlineを使用して、最善の努力をしてしばらくの間、メッセージの再配信を防止したいとします。待機する時間が常に10分になる場合は、Subscriber.Builderでサブスクライバを作成するときにsetMaxAckExtensionPeriod()に10分の時間をかけてコールするのが最適です。メッセージを処理しなかった場合は、メッセージを確認しないでください。クライアントライブラリは、10分間、modifyAckDeadlineを継続します。その後、メッセージは再配信できます。

+0

ありがとうございます。これは、サブスクリプションに500を超えるメッセージがあるまで有効です。 5がある場合、加入者は5を受信して​​ハングし、さらに処理する必要はありません。 600がある場合、加入者は600を受信し、ハングして待つのではなく、すぐに再配信されるメッセージもあります。実行するたびに処理されるメッセージの数が異なります(840、1220、1170、600ではなく)。 – safyia

関連する問題