HermesEventPublisherOOB : dans le champ d’application
L’include de script HermesEventPublisherOOB fournit des méthodes pour publier des messages sur le .Service de messagerie Hermes
Si vous souhaitez modifier la fonctionnalité par défaut de cet include de script, vous devez remplacer les méthodes contenues dans cet include de script dans l’include de script HermesEventPublisher . Pour plus d’informations sur le remplacement des méthodes dans ce script include, reportez-vous à la section Configurer le cadre de travail des notifications d’événements du créateur pour utiliser le Service de messagerie Hermes.
Cet include de script s’exécute dans l’espace de noms sn_api_notif_mgmt .
HermesEventPublisherOOB : fetchMessageHeaders(Message d’objet)
Renvoie les en-têtes de message associés au message transmis.
Vous devez appeler cette méthode avant de publier le message via le Service de messagerie Hermes fichier .
L’implémentation par défaut de cette méthode définit uniquement la valeur de l’en-tête d’origine sur TMT_SERVICENOW. Si d’autres attributs d’en-tête doivent être renvoyés par cette méthode en fonction des besoins de votre entreprise, vous devez remplacer cette méthode dans l’include de script HermesEventPublisher et fournir les attributs d’en-tête supplémentaires.
| Nom | Type | Description |
|---|---|---|
| message | Objet | Événement TMF à publier dans le courtier de messages Hermes Kafka. Pour plus de détails sur le format de ce message, consultez le Guide de l’utilisateur de l’API TMF688 Event Management v4.0.0. |
| Type | Description |
|---|---|
| Objet | En-têtes Kafka à utiliser pour le message transmis. Par exemple : |
L’exemple de code suivant montre comment appeler cette méthode.
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(Message d’objet)
Renvoie la clé de partition associée au message transmis.
Vous devez appeler cette méthode avant de publier le message via le Service de messagerie Hermes fichier .
L’implémentation par défaut de cette méthode renvoie un ID unique généré automatiquement comme clé de partition. Ce type d’implémentation garantit que les messages sont publiés uniformément dans toutes les partitions de la rubrique. Si vous souhaitez modifier la gestion des partitions, vous devez remplacer cette méthode dans l’include de script HermesEventPublisher . Une autre implémentation possible consiste à retourner une clé de partition unique basée sur le type d’événement du message, ou un autre attribut, pour assurer le séquençage des messages du même type d’événement ou attribut.
| Nom | Type | Description |
|---|---|---|
| message | Objet | Message à publier à l’aide du courtier de messages Hermes Kafka. Pour plus de détails sur le format de ce message, consultez le Guide de l’utilisateur de l’API TMF688 Event Management v4.0.0. |
| Type | Description |
|---|---|
| Chaîne | Clé de partition Kafka à utiliser pour le message transmis. Par exemple : 6B29FC40-CA47-1067-B31D-00DD010662DA |
L’exemple de code suivant montre comment appeler cette méthode.
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);
}
}
},
L’exemple de code suivant montre comment remplacer cette méthode pour inclure votre propre logique afin de déterminer la clé de partition à utiliser pour le message spécifié.
// 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(Message d’objet)
Renvoie toutes les rubriques Kafka associées au message transmis.
Cette méthode n’est pas implémentée dans l’implémentation de base, elle renvoie uniquement un sys_id statique. Vous devez remplacer cette méthode dans l’include de script HermesEventPublisher et fournir une logique qui détermine la ou les rubriques Kafka auxquelles envoyer le message transmis.
Pour plus d’informations sur l’implémentation de cette méthode, reportez-vous à la section Configurer le cadre de travail des notifications d’événements du créateur pour utiliser le Service de messagerie Hermes.
| Nom | Type | Description |
|---|---|---|
| message | Objet | Message TMF à publier dans le courtier de messages Hermes Kafka. Pour plus de détails sur le format de ce message, consultez le Guide de l’utilisateur de l’API TMF688 Event Management v4.0.0. |
| Type | Description |
|---|---|
| Tableau | Liste des sys_ids des rubriques Kafka auxquelles le message doit être envoyé. Par exemple : Table : Rubrique Kafka [cmdb_ci_appl_kafka_topic] |
L’exemple de code suivant montre comment appeler cette méthode.
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);
}
}
},
L’exemple de code suivant montre comment remplacer cette méthode pour renvoyer le même sys_id d’enregistrement de rubrique pour chaque message transmis.
// 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'];
},
L’exemple de code suivant montre comment remplacer cette méthode pour identifier les rubriques auxquelles envoyer un message en fonction du type d’événement dans le message.
// 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(Objet tmfEventPayload)
Publie la charge utile compatible TMF688 réussie à l’aide du Service de messagerie Hermes fichier .
Il s’agit d’une méthode parente qui appelle d’autres méthodes pour publier l’événement. Il est peu probable que vous deviez remplacer cette méthode à moins que vous ne souhaitiez modifier le mécanisme de publication Kafka, par exemple en utilisant Studio de workflow l’API ProducerV2 au lieu de l’utiliser.
| Nom | Type | Description |
|---|---|---|
| tmfEventPayload | Objet | Charge utile d’événement compatible TMF688. Pour obtenir une description du format de cette charge utile d’événement, consultez le Guide de l’utilisateur de l’API TMF688 Event Management. |
| Type | Description |
|---|---|
| Aucun |
L’exemple de code suivant montre comment appeler cette méthode.
publishMessageToHermesKafka: function(tmfEventPayload) {
new HermesEventPublisher().publishEventToHermesKafka(tmfEventPayload);
},