最近、GoogleはPub/Subサービス向けに厳密に一度だけの配信機能のプレビューを発表した。この機能を有効すると、サブスクリプションがメッセージの重複配信を受け取らないことをPub/Subが保証する。
Google Pub/Subは、Google Cloud Platform(GCP)で利用できるメッセージングサービスである。これにより、サービスはキューを介して非同期で通信できる。さらに、イベントストリームの取り込みと統合、および順序付けられた配信をサポートする。このサービスの最新機能は、メッセージを受信してサブスクライバに配信するときに厳密に一度だけ配信するものである。
Google Cloudのアウトバウンド製品管理ディレクターのRichard Seroter氏は、次のようにツイートしている。
クラウドで最もユニークなメッセージングサービスの1つは、@Google Cloud Pub/Subです。キューイング、通知、ログスタイルの再生がすべて1つになっています。これまで、少なくとも1回は配信するサービスを提供していました。今ですか?厳密に一度だけの配信をプレビューしています。
ドキュメントによると、Google Pub/Subユーザがサブスクリプションでこの機能を有効にすると、このサービスによってメッセージが問題なく配信されたことが確認された後、再配信が発生しないことが保証される。さらに、メッセージが未処理の間、つまり配信結果待ちの期限が切れるまで、あるいはメッセージ受領が確認されるまで、再配信が発生しないようになる。さらに、厳密に一度だけの配信が有効になっているサブスクリプションは、重複した配信を受け取らない。
ただし、ドキュメントの別の箇所に記載されているが、この少なくとも1回の動作にはいくつかの例外がある。それは、特定のサブスクリプションが作成される前にメッセージが公開された場合、あるいは設定されているメッセージ保持期間内にメッセージが削除された場合である。
ユーザは、Cloud Console、Google Cloud CLI、あるいは Pub/Sub APIを使ってプルサブスクリプションまたはプッシュサブスクリプションを作成できる。さらに、厳密に一度だけの配信を設定(有効化)できるようになった。最後に、サブスクライバは、StreamingPull APIを使うサブスクリプションを含め、これらのサブスクリプションからメッセージを受信できる。
GoogleのEME ACPG業界プラクティスリーダーのNik Eleftheriou氏は、ツイートで次のように述べている。
pubsubメッセージに対して1回だけ動作することは、アプリケーションレベルでコーディングできるものですが、組み込み機能として使っても問題ありません。これを提供できてうれしいです。
さらに、たとえば、GoogleはGoogle Cloud Pub/SubのNode.jsクライアントに少なくとも1回の配信フラグを追加した。
他のパブリッククラウドプロバイダーであるAWSとMicrosoftも、クラウドプラットフォームでメッセージングサービスを提供している。たとえば、AWS with Simple Queue Service (SQS)がある。このサービスでは、FIFOキューでの厳密に一度だけの配信もサポートする。しかし、Service Busメッセージングサービスでは、Microsoftはそのような配信をサポートしない。一方、彼らのストリーミングサービス Azure Stream Analyticsではサポートされる。
Google Pub/Subは現在、すべてのGCPリージョンで利用できる。料金の詳細については、料金ガイドをご覧ください。