ApsaraMQ for Kafka コンソールの [最終更新日時] 列には、各パーティションに含まれる最新メッセージのタイムスタンプが表示されます。この列に 1970 または -- が表示される場合は、以下のいずれかの原因が該当します。
症状
トピックパーティションの [最終更新日時] 列に予期しない値が表示されます。
| 表示値 | 意味 |
|---|---|
| 1970 | 保存されているタイムスタンプがゼロまたは存在しないため、パーティションのタイムスタンプは UNIX エポック(1970 年 1 月 1 日)にデフォルト設定されます。 |
| -- | コンソールがパーティションのタイムスタンプを取得できません。 |
原因
「1970」が表示される場合
| 原因 | 詳細 |
|---|---|
| 空または完全に期限切れのパーティション | パーティション内に有効なメッセージが存在しません。そのため、タイムスタンプはエポックゼロ(1970 年 1 月 1 日)にフォールバックされます。 |
| 古いバージョンの Kafka クライアント | V0.10.2 より前のクライアントバージョンでは、タイムスタンプフィールドが設定されません。これらのクライアントによって生成されたメッセージには、タイムスタンプとしてゼロが付与されます。 |
| プロデューサーによる null タイムスタンプ | プロデューサーがメッセージのタイムスタンプとして明示的に null を渡しています。ブローカーはこれをエポックゼロとして保存します。 |
「--」が表示される場合
| 原因 | 詳細 |
|---|---|
| ローカル記憶域を使用している | オープンソース版 Apache Kafka API はローカル記憶域オプションをサポートしていません。そのため、コンソールはタイムスタンプを取得できず、「--」を表示します。これは、ローカル記憶域を使用するパーティションでは想定される動作です。 |
| クラウドストレージのキャッシュが期限切れ | クラウドストレージでは、最終更新時間がキャッシュされます。パーティションに長期間新しいメッセージが到着しない場合、キャッシュが期限切れとなり、「--」が表示されます。 |
ソリューション
古い Kafka クライアントをアップグレードする
クライアントを V0.10.2 以降のバージョンにアップグレードしてください。
プロデューサーによる null タイムスタンプを修正する
プロデューサーのコードを確認し、null の代わりに有効なタイムスタンプを渡してください。
ローカル記憶域またはクラウドストレージキャッシュの期限切れによる「--」を解消する
ローカル記憶域を使用している場合、「--」の表示はオープンソース版 Apache Kafka API がローカル記憶域オプションをサポートしていないため、想定される動作です。
いずれの場合も、メッセージに関する情報をクエリして、メッセージが生成された時点を確認できます。