Cloud Pub/Sub の確認済みメッセージ保持機能とシーク機能の動作確認

Cloud Pub/Sub のメッセージ保持周りの動作を確認してみました。

# 確認済みメッセージ保持とシーク機能
Cloud Pub/Sub サブスクリプションで最大7日間、Cloud Pub/Sub トピックを利用することで最大31日間に渡って確認済みのメッセージを保持することが可能となります。サブスクリプションについては、設定値「確認済みメッセージを保持」にチェックを入れることで確認済みメッセージの保持が可能となります。
・[メッセージ保持機能](https://cloud.google.com/pubsub/docs/replay-overview?hl=ja#message_retention)

確認済みメッセージを保持することで、設定した期間は確認応答のエラーが発生した場合などにシーク機能で確認済みメッセージを未確認としてマークし、Pub/Subにメッセージの再配信を強制することが可能となります。
・[シークしてメッセージを再生する](https://cloud.google.com/pubsub/docs/replay-message?hl=ja)

# 動作確認
Cloud Storage の Cloud Pub/Sub 通知構成より、GCSに新規ファイルを置くことでメッセージを発行し動作を確認する
・[Cloud Storage の Pub/Sub 通知](https://cloud.google.com/storage/docs/pubsub-notifications?hl=ja)
　
**設定値**
| 設定先 | 設定項目 | 設定値 |
|:-----|:-----|:-----|
| GCS | 通知構成のイベントタイプ |OBJECT_FINALIZE |
| トピック | トピックメッセージ保持|有効　20分
| サブスクリプション| サブスクリプションメッセージ保持|10分
|  | 確認済みメッセージ保持|有効

**GCSにファイルを置いてからの挙動**
1. 20分間はメッセージpullできることを確認
2. 20分後にメッセージpullできないことを確認
3. 20分間に一度確認応答した場合、以降はメッセージpullできないことを確認
4. 確認応答してもタイムスタンプで20分間はシークできたことを確認
5. タイムスタンプでシークしたメッセージはバケットにファイルを置いてから20分後にはメッセージpullできないことを確認
6. 確認応答してもスナップショットで20分間はシークできたことを確認
7. スナップショットでシークしたメッセージはバケットにファイルを置いてから20分後にはメッセージpullできないことを確認
8. バケットにファイルを置いてから20分後にスナップショットからシークしてもメッセージは再生されないことを確認

 
**確認**
1. 20分間はメッセージpullできることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587144/90a00167-65b0-67d1-0ce0-f72f673f29fc.png)
　
2. 20分後にメッセージpullできないことを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587144/c502f6e5-df94-c236-bbc4-79db9856847f.png)
　
3. 20分間の中で確認応答した場合、以降はメッセージpullできないことを確認
確認応答を実施
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587144/1db09238-1c46-d7f9-bd66-2cb9563712f8.png)
確認応答後はpullしてもメッセージが表示されない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587144/90a00167-65b0-67d1-0ce0-f72f673f29fc.png)
　
 4. 確認応答してもタイムスタンプで20分間はシークできたことを確認
メッセージ再生
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587144/237dcfb9-ec24-1001-1fc6-7904edba8a44.png)
メッセージpullできる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587144/90a00167-65b0-67d1-0ce0-f72f673f29fc.png)
　
5. タイムスタンプでシークしたメッセージはバケットにファイルを置いてから20分後にはメッセージpullできないことを確認
ファイルを置いた16:11から20分経過後の16:31以降はメッセージpullできない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587144/c502f6e5-df94-c236-bbc4-79db9856847f.png)
　
6. 確認応答してもスナップショットで20分間はシークできたことを確認 ※予めスナップショットは取得済み
メッセージ再生
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587144/f67dbd6a-6382-cd49-26d9-393c333f92ca.png)
メッセージpullできる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587144/90a00167-65b0-67d1-0ce0-f72f673f29fc.png)
　
7. スナップショットでシークしたメッセージはバケットにファイルを置いてから20分後にはメッセージpullできないことを確認 ※予めスナップショットは取得済み
ファイルを置いた16:11から20分経過後の16:31以降はメッセージpullできない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587144/c502f6e5-df94-c236-bbc4-79db9856847f.png)
　
8. バケットにファイルを置いてから20分後にスナップショットからシークしてもメッセージは再生されないことを確認 ※予めスナップショットは取得済み
メッセージ再生
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587144/f67dbd6a-6382-cd49-26d9-393c333f92ca.png)
メッセージpullできない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3587144/c502f6e5-df94-c236-bbc4-79db9856847f.png)