Hermes でのトピックの管理
Hermes メッセージングサービス を使用して、インスタンス内のトピックレコードと Hermes Kafka クラスター 内の Kafka トピックを管理します。
トピックレコード
メッセージは、Hermes Kafka クラスターの Kafka トピックに整理され、保存されます。トピックレコードは、インスタンスの Kafka トピック [sys_kafka_topic] テーブルに格納されます。このテーブルには、各トピックの名前空間への参照を含むトピックレコードのリストが表示されます。各トピックレコードには、トピックの名前、関連する名前空間、およびトピックがアクティブかどうかのフィールドがあります。
- 検出されたトピックのトピックレコードを作成し、トピック名のプリフィックスに基づいて適切な名前空間に割り当てます。
- Kafka コマンドラインインターフェイス (CLI) などの外部ソースから作成されたトピックを同期します。たとえば、近くのクラスター上の外部ソースからトピックが作成されると、ジョブが実行され、遠くのクラスターにもトピックが作成されます。
- トピックがどの名前空間にも一致しない場合は、警告メッセージがログに記録されます。どの名前空間にも一致しない場合、トピックレコードは作成されません。すべてのトピックに一致する、デフォルトの名前空間と呼ばれる、プリフィックスなしのデフォルトの名前空間があります。トピックがどの名前空間にも一致しないのは、デフォルトの名前空間が削除または変更された場合のみです。
- Kafka トピックが見つからない場合、そのトピックを非アクティブとしてマークします。
トピックインスペクターを使用して、Hermes Kafka クラスターのトピックを監視および表示できます。詳細については、「Hermes Kafka クラスターのトピックの監視」を参照してください。
トピックの作成
- インスタンスからトピックを作成します。この方法では、Kafka トピック [sys_kafka_topic] テーブルにレコードが作成され、Hermes Kafka クラスターに Kafka トピックが作成されます。「Hermes 内でトピックを作成する」を参照してください。
- トピックを外部から作成します。たとえば、Kafka コマンドラインインターフェイス (CLI) を使用してトピックを作成します。注:クラスターとインスタンス間の同期の問題を回避するために、トピックを外部で作成するときにはアプリケーション ID を含めます。たとえば、アプリケーション ID がない場合、
snc.instancename.fulfillment.topicnameのような名前で CLI から作成されたトピックは、fulfillment名前空間ではなくデフォルトの名前空間に作成されます。トピックがfulfillment名前空間に作成されるようにするには、snc.instancename.fulfillment.app_id.topicnameの形式を使用して名前にアプリケーション ID を含めます。app_idを選択したアプリケーション ID に置き換えます。
何らかの理由で Hermes Kafka クラスターでトピックを作成できない場合は、Kafka トピック [sys_kafka_topic] テーブルにも作成されません。
トピックの更新
必要に応じて、トピック内のパーティション数を変更することができます。トピック内のパーティション数は増やすことのみが可能である点に注意してください。詳細については、「Hermes でのトピックの更新」を参照してください。
作成後、トピックレコードに割り当てられた名前空間は永続的です。名前空間レコードを作成し、そこに既存のトピックを移動する場合は、トピックを削除し、新しい名前空間プリフィックスを使用して Hermes Kafka クラスターで再度作成する必要があります。トピックがインスタンスを介して作成されなかった場合、再スキャン後に新しいトピックレコードが作成され、一致する名前空間レコードにアサインされます。
トピックの削除
- インスタンスにある Kafka トピック [sys_kafka_topic] テーブルからトピックを直接削除します。この方法では、1 回のアクションですべての Hermes Kafka クラスターからトピックを自動的に削除します。「Hermes 内のトピックの削除」を参照してください。
- トピックを外部から削除します。たとえば、Kafka コマンドラインインターフェイス (CLI) を使用してトピックを削除します。重要:トピックを外部から削除するには、ポートの各セット (410x と 420x) を指定して、両方の Hermes クラスターからトピックを手動で削除する必要があります。可能であれば、代わりにインスタンスからトピックを削除してください。
ストリームコネクト でサブスクリプションがある場合は、トピックを削除することはできません。
トピックの再スキャン
再スキャンすると、Hermes Kafka クラスター内の対応するトピックレコードがないトピックに対してトピックレコードが作成されます。たとえば、CLI を使用してトピックを Hermes に作成した場合、スケジュール済みジョブによって作成されるのを待つのではなく、再スキャンして、対応するトピックレコードを Kafka トピック [sys_kafka_topic] テーブルに、すぐに作成することができます。
- 再スキャンは 10 分ごとに自動的に行われます。
- 作成されたトピックレコードは、プリフィックス一致ルールに基づいて既存の名前空間に割り当てられます。
- Hermes にトピックが既に存在するときに ServiceNow 統合ハブ Kafka Consumer (com.glide.hub.kafka_consumer) プラグインが有効になった場合。
- トピックレコードが誤って削除された場合。
- 名前空間の定義が変更され、既存のトピックを新しい名前空間に割り当てる場合。