HermesEventPublisherOOB – Umfang

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 5 Minuten Lesedauer
  • Die HermesEventPublisherOOB Die Skripteinbindung bietet Methoden zum Veröffentlichen von Nachrichten in Hermes Messaging-Service.

    Wenn Sie die Standardfunktionalität dieser Skripteinbindung ändern möchten, müssen Sie die in dieser Skripteinbindung enthaltenen Methoden in überschreiben HermesEventPublisher Skripteinbindung. Weitere Informationen zum Überschreiben der Methoden in dieser Skripteinbindung finden Sie unter Konfigurieren Sie das Framework für Erstellererereignisbenachrichtigungen für die Verwendung von Hermes Messaging-Service.

    Diese Skripteinbindung wird in ausgeführt sn_api_notif_mgmt Namespace.

    HermesEventPublisherOOB – fetchMessageHeaders (Objektnachricht)

    Gibt die Nachrichten-Header zurück, die der übergebenen Nachricht zugeordnet sind.

    Sie müssen diese Methode aufrufen, bevor Sie die Nachricht über veröffentlichen Hermes Messaging-Service.

    Die Standardimplementierung dieser Methode legt nur fest Ursprung Headerwert bis TMT_SERVICENOW . Wenn andere Headerattribute von dieser Methode basierend auf Ihren Geschäftsanforderungen zurückgegeben werden sollen, müssen Sie diese Methode in überschreiben HermesEventPublisher Skripteinbindung und zusätzliche Headerattribute angeben.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    message Objekt TMF-Ereignis, das im Hermes Kafka-Nachrichten-Broker veröffentlicht werden soll. Details zum Format dieser Nachricht finden Sie unter TMF688 Ereignismanagement-API – Benutzerhandbuch v4.0.0 .
    Tabelle : 2. Rückgaben
    Typ Beschreibung
    Objekt Kafka-Header, die für die übergebene Nachricht verwendet werden sollen.
    Zum Beispiel:
    {
      origin: 'TMT_SERVICENOW'
    }

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    publishMessageThroughProducerV2API: function(message) {
      if (gs.nil(message)) return;
      var comptableTopicSysIds = this.fetchTopicsForMessage(message);
      if (gs.nil(comptableTopicSysIds)) return;
    
      for (var i = 0; i < comptableTopicSysIds.length; i++) {
        var partitionKey = this.fetchPartionKey(message);
        var headers = this.fetchMessageHeaders(message)
        try {
          var producer = new sn_ih_kafka.ProducerV2();
          producer.send(comptableTopicSysIds[i], partitionKey, JSON.stringify(message), false, headers);
        } catch (ex) {
          this._logger.logErr("Publishing message to Hermes Kafka Failed, error is: " + ex);
        }
      }
    },

    HermesEventPublisherOOB – fetchPartionKey(Objektnachricht)

    Gibt den Partitionsschlüssel zurück, der der übergebenen Nachricht zugeordnet ist.

    Sie müssen diese Methode aufrufen, bevor Sie die Nachricht über veröffentlichen Hermes Messaging-Service.

    Die Standardimplementierung für diese Methode gibt eine automatisch generierte eindeutige ID als Partitionsschlüssel zurück. Diese Art der Implementierung stellt sicher, dass Nachrichten gleichmäßig über alle Partitionen des Themas veröffentlicht werden. Wenn Sie die Verarbeitung von Partitionen ändern möchten, müssen Sie diese Methode in überschreiben HermesEventPublisher Skripteinbindung. Eine weitere mögliche Implementierung besteht darin, einen eindeutigen Partitionsschlüssel basierend auf dem Nachrichtenereignistyp oder einem anderen Attribut zurückzugeben, um die Sequenzierung von Nachrichten desselben Ereignistyps oder Attributs sicherzustellen.

    Tabelle : 3. Parameter
    Name Typ Beschreibung
    message Objekt Nachricht, die mit dem Hermes Kafka-Nachrichten-Broker veröffentlicht werden soll. Details zum Format dieser Nachricht finden Sie unter TMF688 Ereignismanagement-API – Benutzerhandbuch v4.0.0 .
    Tabelle : 4. Rückgaben
    Typ Beschreibung
    Zeichenfolge Kafka-Partitionsschlüssel, der für die übergebene Nachricht verwendet werden soll.

    Beispiel: 6B29FC40-CA47-1067-B31D-00D010662DA

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    publishMessageThroughProducerV2API: function(message) {
      if (gs.nil(message)) return;
      var comptableTopicSysIds = this.fetchTopicsForMessage(message);
      if (gs.nil(comptableTopicSysIds)) return;
    
      for (var i = 0; i < comptableTopicSysIds.length; i++) {
        var partitionKey = this.fetchPartionKey(message);
        var headers = this.fetchMessageHeaders(message)
        try {
          var producer = new sn_ih_kafka.ProducerV2();
          producer.send(comptableTopicSysIds[i], partitionKey, JSON.stringify(message), false, headers);
        } catch (ex) {
          this._logger.logErr("Publishing message to Hermes Kafka Failed, error is: " + ex);
        }
      }
    },

    Das folgende Codebeispiel zeigt, wie Sie diese Methode überschreiben, um Ihre eigene Logik für die Bestimmung des Partitionsschlüssels einzubeziehen, der für die angegebene Nachricht verwendet werden soll.

    // Existing implementation for fetching a partition key which is an auto-generated unique ID.
    fetchPartionKey: function(message) { 
      // Implement it for custom partition key 
      // Random message key ensures better distribution of messages across partitions. 
      // Same message key ensures that messages always goes to the same partition. This ensures a strict sequencing
      //  of messages at the Kafka consumer group level. 
      return gs.generateGUID(); 
    }, 
    
    // Implementation where the partition key is determined based on the event type.
    fetchPartionKey: function(message) {
      var eventType = message.eventType;
      var partionKey = fetchPartionKeyForMessage(eventType);
      return partionKey;
    },

    HermesEventPublisherOOB – fetchTopicsForMessage(Objektnachricht)

    Gibt alle Kafka-Themen zurück, die der übergebenen Nachricht zugeordnet sind.

    Diese Methode ist in der Basisimplementierung nicht implementiert, sie gibt nur eine statische sys_ID zurück Sie müssen diese Methode in überschreiben HermesEventPublisher Skripteinbindung und Logik bereitstellen, die bestimmt, an welche Kafka-Themen die übergebene Nachricht gesendet werden soll.

    Weitere Informationen zur Implementierung dieser Methode finden Sie unter Konfigurieren Sie das Framework für Erstellererereignisbenachrichtigungen für die Verwendung von Hermes Messaging-Service.

    Tabelle : 5. Parameter
    Name Typ Beschreibung
    message Objekt TMF-Nachricht, die im Hermes Kafka-Nachrichten-Broker veröffentlicht werden soll. Details zum Format dieser Nachricht finden Sie unter TMF688 Ereignismanagement-API – Benutzerhandbuch v4.0.0 .
    Tabelle : 6. Rückgaben
    Typ Beschreibung
    Array Liste der sys_IDs der Kafka-Themen, an die die Nachricht gesendet werden soll.
    Zum Beispiel:
    [
      "9d385017c611228701d22104cc95c371",
      "8438201ec613628421e13105d396d421"
    ]

    Tabelle: Kafka-Thema [cmdb_ci_appl_kafka_topic]

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    publishMessageThroughProducerV2API: function(message) {
      if (gs.nil(message)) return;
      var comptableTopicSysIds = this.fetchTopicsForMessage(message);
      if (gs.nil(comptableTopicSysIds)) return;
    
      for (var i = 0; i < comptableTopicSysIds.length; i++) {
        var partitionKey = this.fetchPartionKey(message);
        var headers = this.fetchMessageHeaders(message)
        try {
          var producer = new sn_ih_kafka.ProducerV2();
          producer.send(comptableTopicSysIds[i], partitionKey, JSON.stringify(message), false, headers);
        } catch (ex) {
          this._logger.logErr("Publishing message to Hermes Kafka Failed, error is: " + ex);
        }
      }
    },

    Das folgende Codebeispiel zeigt, wie Sie diese Methode überschreiben, um dieselbe sys_ID des Themendatensatzes für jede übergebene Nachricht zurückzugeben.

    // Return the same topic for all messages if your 
     // implementation only supports one kind of topic
    
    fetchTopicsForMessage: function(message) { 
    // Return the same sys_id for all passed messages which
    // implies that all of the messages are published to the same topic.
    return ['91564fc087f8351063151f473cbb35f8'];
    },

    Das folgende Codebeispiel zeigt, wie Sie diese Methode überschreiben, um Themen zu identifizieren, an die eine Nachricht basierend auf dem Ereignistyp in der Nachricht gesendet werden soll.

    // Fetch the topic based on the message content. 
    // This could be based on the message domain type or the message event type.
    
    fetchTopicsForMessage: function(message) { 
    // Implement to return topic based on a message content
    // Implementor may decide a topic based on 'eventType' or any other attribute.
    
    var eventType = message.eventType;
    
    var topicSysIdsArr = this.fetchTopicBasedOnEventType(eventType);
    return topicSysIdsArr
    
    },

    HermesEventPublisherOOB – publishEventToHermesKafka(Object tmfEventPayload)

    Veröffentlicht die übergebene TMF688-konforme Nutzlast mit Hermes Messaging-Service.

    Dies ist eine übergeordnete Methode, die andere Methoden zum Veröffentlichen des Ereignisses aufruft. Es ist unwahrscheinlich, dass Sie diese Methode überschreiben müssen, es sei denn, Sie möchten den Kafka-Veröffentlichungsmechanismus ändern, z. B. mit Workflow-Studio Anstatt zu verwenden ProduktV2 API.

    Tabelle : 7. Parameter
    Name Typ Beschreibung
    TmfEventPayload Objekt TMF688-konforme Ereignisnutzlast. Eine Beschreibung des Formats dieser Ereignisnutzlast finden Sie unter TMF688 Ereignismanagement-API – Anwenderhandbuch .
    Tabelle : 8. Rückgaben
    Typ Beschreibung
    Keine

    Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.

    publishMessageToHermesKafka: function(tmfEventPayload) {
      new HermesEventPublisher().publishEventToHermesKafka(tmfEventPayload);
    },