Konfigurieren Sie das Framework für Erstellererereignisbenachrichtigungen für die Verwendung von Hermes Messaging-Service

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 3 Minuten Lesedauer
  • Wenn Sie verwenden Hermes Messaging-Service In Ihrer Instanz müssen Sie das Framework für Erstellererereignisbenachrichtigungen für den Kafka-Nachrichtenbus konfigurieren.

    Vorbereitungen

    Erforderliche Rolle: Administrator

    Die Hermes Messaging-Service Muss aktiviert sein. Details finden Sie unter Activating the Hermes Messaging Service.

    Das folgende Code-Fragment zeigt an HermesEventPublisher Methoden, die aufgerufen werden müssen, um die Elemente zu konfigurieren, die zum Senden einer Nachricht an ein Thema mit erforderlich sind Hermes Messaging-Service. Die ProduktV2 Die API wird dann aufgerufen, um die Nachricht zu senden.
    publishEventToHermesKafka: function(tmfEventPayload) {
      if (gs.nil(tmfEventPayload)) {
        return;
      }
      this.publishMessageThroughProducerV2API(tmfEventPayload)
    
    },
    
    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);
        }
      }
    },

    Prozedur

    1. Richten Sie eine sichere Verbindung mit ein Hermes Messaging-Service.
    2. Überschreiben Sie die Standardfunktionalität in HermesEventPublisherOOB – fetchTopicsForMessage(Objektnachricht) Methode mit Ihrer anwenderdefinierten Themenauswahllogik beim Veröffentlichen einer Nachricht in Hermes Messaging-Service.
      In HermesEventPublisher – fetchTopicsForMessage() Methode müssen Sie eine Logik angeben, die bestimmt, an welche Kafka-Themen eine bestimmte Nachricht gesendet werden soll. Sie geben dann die sys_IDs dieser Themendatensätze in einem Array zurück.

      Sie können ein Thema basierend auf einem Attribut in der Nachrichtennutzlast auswählen oder für jede Nachricht dasselbe Thema zurückgeben, wenn Ihre Implementierung nur ein einzelnes Thema verwendet.

      Das folgende Beispiel zeigt, wie dieselbe sys_ID des Themendatensatzes für jede übergebene Nachricht zurückgegeben wird.
      // 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 Beispiel zeigt, wie Themen identifiziert werden, 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
      
      },
    3. Überschreiben Sie die Standardfunktionalität in HermesEventPublisherOOB – fetchPartionKey(Objektnachricht) Methode mit Ihrer anwenderdefinierten Logik, um den Partitionsschlüssel zurückzugeben, der beim Veröffentlichen einer Nachricht im verwendet werden soll Hermes Messaging-Service.
      Die folgende Liste enthält einige mögliche Arten von zurückzugebenden Partitionsschlüsseln und die zugehörigen Vorteile:
      • Eine automatisch generierte eindeutige ID. Dieser Typ von Partitionsschlüssel stellt sicher, dass Nachrichten gleichmäßig über Themenpartitionen hinweg veröffentlicht werden. Dies ist die Standardimplementierung.
      • Ein eindeutiger Schlüssel basierend auf dem Nachrichtenereignistyp (oder einem anderen Nachrichtenattribut). Dieser Typ von Partitionsschlüssel stellt die Sequenzierung von Nachrichten dieses Ereignistyps (oder eines anderen Nachrichtenattributs) sicher.
      • Derselbe Partitionsschlüssel, wodurch Nachrichten auf derselben Partition gesendet werden. Dieser Typ von Partitionsschlüssel stellt eine strikte Sequenzierung von Nachrichten auf Kafka-Verbrauchergruppenebene sicher.
      Das folgende Beispiel zeigt, wie für jeden Partitionsschlüssel eine zufällige ID zurückgegeben wird.
      fetchPartionKey: function(message) { 
      // Implement it for custom partition key 
      // Random message keys ensure better distribution of message across partitions. 
      // Same message keys ensure that message always goes to the same partition.   
      // This ensures strict sequencing of messages at the Kafka consumer group level. 
      return gs.generateGUID(); 
      },
      Das folgende Beispiel zeigt, wie ein Partitionsschlüssel basierend auf dem Ereignistyp in der Nachricht zurückgegeben wird.
      // Implementation where the partition key is decided based on the event type.
      fetchPartionKey: function(message) { 
      
      var eventType = message.eventType;
      var partionKey = fetchPartionKeyForMessage(eventType);
      return partionKey;
      },
    4. Überschreiben Sie die Standardfunktionalität in HermesEventPublisherOOB – fetchMessageHeaders (Objektnachricht) Methode mit Ihrer anwenderdefinierten Logik zum Abrufen des Headers für eine angegebene Nachricht, bevor die Nachricht über veröffentlicht wird Hermes Messaging-Service.
      Weitere Informationen finden Sie unter Apache-Kafka Dokumentation für weitere Informationen zu diesen Headern.
      Das folgende Beispiel zeigt, wie Header basierend auf dem Ereignistyp in der Nachricht zurückgegeben werden.
      fetchMessageHeaders: function(message) { 
      // Returned headers are based on the event type passed in the message object. 
        var eventType = message.eventType;
        var headerObject = fetchHeadersBasedOnEventType(eventType);
        return headerObject;
      },