Hermes でのトピックの管理

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む5読むのに数分
  • を使用して、 Hermes インスタンス内のトピックレコードと Kafka クラスター Hermes メッセージングサービス内の Kafka トピックを管理します。

    トピックレコード

    メッセージは、Kafka クラスターの Kafka トピックに整理され、 Hermes 保存されます。トピックレコードは、インスタンスの Kafka トピック [sys_kafka_topic] テーブルに保存されます。このテーブルには、各トピックの名前空間への参照を含むトピックレコードのリストが表示されます。各トピックレコードには、トピックの名前、関連する名前空間、およびトピックがアクティブかどうかのフィールドがあります。

    スケジュール設定済みジョブは、Hermes にあるトピックとトピックレコードを同期するために定期的に実行されます。このジョブは、次の機能を実行します。
    • 検出されたトピックのトピックレコードを作成し、トピック名のプリフィックスに基づいて適切な名前空間に割り当てます。
    • Kafka コマンドラインインターフェイス (CLI) などの外部ソースから作成されたトピックを同期します。たとえば、近接クラスター上の外部ソースからトピックが作成されると、ジョブが実行され、遠くのクラスターにもトピックが作成されます。
    • トピックがどの名前空間にも一致しない場合は、警告メッセージがログに記録されます。どの名前空間にも一致しない場合、トピックレコードは作成されません。すべてのトピックに一致する、デフォルトの名前空間と呼ばれる、プリフィックスなしのデフォルトの名前空間があります。トピックがどの名前空間にも一致しないのは、デフォルトの名前空間が削除または変更された場合のみです。
    • Kafka トピックが見つからない場合、そのトピックを非アクティブとしてマークします。

    トピックインスペクターを使用して、 Hermes Kafka クラスター内のトピックを監視および表示できます。詳細については、「Hermes Kafka クラスターのトピックの監視」を参照してください。

    トピックの作成

    次のいずれかの方法を使用して、 Hermes Kafka クラスターにトピックを作成できます。
    • インスタンスからトピックを作成します。これにより、Kafka トピック [sys_kafka_topic] テーブルにレコードが作成され、Kafka クラスターに Hermes Kafka トピックが作成されます。「でのトピックの作成 Hermes」を参照してください。
    • トピックを外部で作成します。たとえば、Kafka コマンドラインインターフェイス (CLI) を使用してトピックを作成します。
      注:
      クラスターとインスタンス間の同期の問題を回避するには、トピックを外部で作成するときにアプリケーション ID を含めます。たとえば、アプリケーション ID がない場合、 snc.instancename.fulfillment.topicname のような名前で CLI から作成されたトピックは、 フルフィルメント 名前空間ではなくデフォルトの名前空間に作成されます。トピックが fulfillment 名前空間に作成されるようにするには、snc.instancename.fulfillment.app_id.topicname の形式を使用して名前にアプリケーション ID を含めます。app_id選択したアプリケーション ID に置き換えます。

    何らかの理由で Kafka クラスターで Hermes トピックを作成できない場合、Kafka トピック [sys_kafka_topic] テーブルにも作成されません。

    トピックの更新

    必要に応じて、トピック内のパーティション数を変更できます。トピック内のパーティション数のみを増やすことができることに注意してください。詳細については、「でのトピックの更新 Hermes」を参照してください。

    作成後、トピックレコードに割り当てられた名前空間は永続的です。名前空間レコードを作成し、そこに既存のトピックを移動する場合は、トピックを削除し、新しい名前空間プリフィックスを使用して Kafka クラスターに Hermes 再作成する必要があります。トピックがインスタンスを介して作成されなかった場合、再スキャン後に新しいトピックレコードが作成され、一致する名前空間レコードにアサインされます。

    トピックの削除

    次のいずれかの方法を使用して、Hermes Kafka クラスターからトピックを削除できます。
    • インスタンスの Kafka トピック [sys_kafka_topic] テーブルからトピックを直接削除します。この方法では、1 回のアクションですべての Hermes Kafka クラスターからトピックを自動的に削除します。「でのトピックの削除 Hermes」を参照してください。
    • トピックを外部から削除します。たとえば、Kafka コマンドラインインターフェイス (CLI) を使用してトピックを削除します。
      重要:
      トピックを外部から削除するには、ポートの各セット (410x と 420x) を指定して、両方の Hermes クラスターからトピックを手動で削除する必要があります。可能であれば、代わりにインスタンスからトピックを削除してください。

    にサブスクリプション Apache Kafka 向けストリームコネクトがあるトピックは削除できません。

    トピックの再スキャン

    再スキャンすると、 Hermes 対応するトピックレコードがない Kafka クラスター内のトピックのトピックレコードが作成されます。たとえば、CLI を使用してトピックを作成した場合、再スキャンして、対応するトピックレコードを Kafka トピック Hermes [sys_kafka_topic] テーブルに作成するのを待つのではなく、すぐに作成できます。

    • 再スキャンは 10 分ごとに自動的に行われます。
    • 作成されたトピックレコードは、プリフィックス一致ルールに基づいて既存の名前空間に割り当てられます。
    インスタンス内のトピックレコードが、の内容 Hermesと一致しないことがあります。この状況は、次の場合に発生する可能性があります。
    • Hermes にトピックが既に存在するときに ServiceNow 統合ハブ Kafka Consumer (com.glide.hub.kafka_consumer) プラグインが有効になった場合。
    • トピックレコードが誤って削除された場合。
    • 名前空間の定義が変更され、既存のトピックを新しい名前空間に割り当てる場合。