セルフマネージド Kafka デプロイメントを ApsaraMQ for Kafka に移行する場合や統合テストを実行する場合、数百ものトピックを手動で再作成するのは非現実的です。自動トピック作成機能を有効にすると、プロデューサーが存在しないトピックにメッセージを送信した際に、ApsaraMQ for Kafka がその場でトピックを作成します。これにより、個別にトピックをプロビジョニングする手間を省き、移行やテストの検証に集中できます。
トピック作成には以下の 2 つのアプローチがあります。
| アプローチ | 使用タイミング | トレードオフ |
|---|---|---|
| 手動作成(本番環境での推奨) | 本番ワークロード | パーティション数、ストレージエンジン、命名規則について完全な制御が可能。きめ細かなアクセス制御とリソース監査をサポートします。 |
| 自動作成 | クラウド移行、テスト | セットアップが迅速ですが、自動作成されたトピックはデフォルト設定を使用します。きめ細かなアクセス制御や監査はサポートされません。 |
トピックを手動で作成するには、ApsaraMQ for Kafka コンソールまたはCreateTopic APIをご利用ください。
対応インスタンス
ApsaraMQ for Kafka インスタンスは、以下の両方の要件を満たしている必要があります。
| 項目 | 要件 |
|---|---|
| ステータス | サービス中 |
| バージョン | メジャーバージョン V2.2.0 以降、マイナーバージョンは最新 |
これらの値を確認するには、ApsaraMQ for Kafka コンソールのインスタンスの詳細ページを開き、基本情報セクションをご確認ください。
Professional Edition インスタンスでアクセス制御リスト (ACL) 機能を有効にした後は、既存のトピックを指定せずにメッセージを送信しても、自動トピック作成はトリガーされません。代わりに、明示的にトピックを作成してください。
自動トピック作成の有効化
ApsaraMQ for Kafka コンソールにログインします。概要ページのリソースの分布セクションで、リージョンを選択します。
インスタンスリストページで、ターゲットインスタンスの名前をクリックします。
インスタンスページで、ご利用のインスタンス名をクリックします。
インスタンスの詳細ページの設定情報セクションで、自動トピック作成をオンにします。
スイッチをオンにすると、Standard Edition インスタンスにおいて、存在しないトピックへのメッセージ送信が自動的にそのトピックを作成します。
トピック命名規則
自動作成されるトピック名は、以下のすべての要件を満たす必要があります。
| ルール | 詳細 |
|---|---|
| 長さ | 3~64 文字 |
| 使用可能な文字 | 英字、数字、ハイフン (-)、アンダースコア (_) |
| 内容 | 少なくとも 1 文字以上の英字または数字を含むこと |
これらのルールに違反するトピック名に対してメッセージを送信しても、トピック作成はトリガーされません。
移行またはテスト後の自動トピック作成の無効化
移行またはテストサイクルが完了したら、インスタンスの詳細ページの設定情報セクションで、自動トピック作成をオフにしてください。コンソールまたは API を通じてトピックを管理することで、「本番環境で使用すべきでない理由」で説明されているリスクを回避できます。
本番環境におけるリスク
本番環境で使用すべきでない理由
本番環境で自動トピック作成機能を有効にしないことを推奨します。万一本番環境でこの機能を有効にする場合は、主要な本番業務では使用しないでください。自動トピック作成には以下のリスクがあります。
| リスク | 説明 |
|---|---|
| きめ細かなアクセス制御が不可 | 任意のプロデューサーが権限制御やリソース監査をバイパスして、暗黙的にトピックを作成できます。 |
| リソースの肥大化 | タイポやクライアントの誤設定により、意図しないトピックが静かに作成され、パーティションおよびトピックのクォータを消費します。 |
| サイレント障害 | 自動作成が有効であっても、トピック作成が失敗することがあります。本番環境では、これらの失敗が警告なしにアプリケーションを中断させる可能性があります。「自動作成失敗のトラブルシューティング」をご参照ください。 |
自動トピック作成の使用タイミング
この機能は、クラウド移行またはテスト中のみ使用してください。例として以下が挙げられます。
クラウド移行。 セルフマネージドまたは他クラウドの Kafka デプロイメントを ApsaraMQ for Kafka に移行する際、数百ものトピックを手動で再作成するのは非現実的です。「セルフマネージドまたは他クラウドインスタンスを ApsaraMQ for Kafka インスタンスに移行する」をご参照ください。
統合テスト。 テストフレームワークが動的にトピックを作成するテストを実行する場合。
自動作成失敗のトラブルシューティング
一部のトピックが失敗した場合は、ApsaraMQ for Kafka コンソールまたはCreateTopic APIを呼び出して、手動で作成してください。
多数のトピックが失敗した場合は、アプリケーションログを確認し、以下の一般的な原因をレビューしてください。
| 原因 | 詳細 |
|---|---|
| 無効なトピック名 | トピック名が「命名規則」に従っていません。たとえば、3 文字未満、64 文字を超える、またはサポートされていない文字を含んでいます。 |
| クォータ不足 | インスタンスがパーティションまたはトピックの上限に達しています。追加作成前に、既存のトピックを削除するか、クォータを増やしてください。 |
| 不適切なストレージエンジン | トピックが指定するストレージエンジンが、インスタンスの構成と互換性がありません。 |
| ACL が有効 | ACL が有効になっている Professional Edition インスタンスでは、自動作成がブロックされます。代わりに、明示的にトピックを作成してください。 |
| インフラストラクチャの問題 | ネットワークジッター、ブローカーのスペックアップ、コンソールのスペックアップまたはメンテナンス、Elastic Compute Service (ECS) インスタンス障害などが原因で、作成リクエストがタイムアウトすることがあります。 |
| 名前の競合 | システムがすでに存在する名前でトピックを作成しようとすると、両方のトピックのデータが混在する可能性があります。このような競合は自動的に検出されることはほとんどなく、取り返しのつかない損失を引き起こすことがあります。 |
| 作成遅延 | トピックの自動作成は、既存のトピックへの送信と比べて大幅に時間がかかります。この遅延により、アプリケーションで一時的なタイムアウトが発生する可能性があります。 |