HermesEventPublisherOOB : inclus dans le champ d’application
L’include de script HermesEventPublisherOOB fournit des méthodes pour publier des messages dans le Service de messagerie Hermes fichier .
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 de ce script include, reportez-vous à la section Configurez le cadre de travail de notification d’événement du producteur pour utiliser l' 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 d’informations sur le format de ce message, consultez le Guide de l’utilisateur de l’API Gestion des événements TMF688 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 à renvoyer une clé de partition unique basée sur le type d’événement de 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 d’informations sur le format de ce message, consultez le Guide de l’utilisateur de l’API Gestion des événements TMF688 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 afin d’inclure votre propre logique de détermination de 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 la mise en œuvre de cette méthode, reportez-vous à la section Configurez le cadre de travail de notification d’événement du producteur pour utiliser l' Service de messagerie Hermes.
| Nom | Type | Description |
|---|---|---|
| message | Objet | Message TMF à publier dans le courtier de messages Hermes Kafka. Pour plus d’informations sur le format de ce message, consultez le Guide de l’utilisateur de l’API Gestion des événements TMF688 v4.0.0. |
| Type | Description |
|---|---|
| Tableau | Liste des sys_ids des rubriques Kafka auxquelles le message doit être envoyé. Situé dans la table Rubrique Kafka [cmdb_ci_appl_kafka_topic]. 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);
}
}
},
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(Object tmfEventPayload)
Publie la charge utile conforme à la norme TMF688 transmise à l’aide de la commande .Service de messagerie Hermes
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 ayez besoin de remplacer cette méthode, sauf si vous souhaitez modifier le mécanisme de publication Kafka, par exemple en utilisant Studio de workflow au lieu d’utiliser l’API ProducerV2 .
| Nom | Type | Description |
|---|---|---|
| tmfEventPayload | Objet | Charge utile d’événement conforme au TMF688. Pour obtenir une description du format de cette charge utile d’événement, consultez le Guide de l’utilisateur de l’API Gestion des événements TMF688. |
| Type | Description |
|---|---|
| Aucun |
L’exemple de code suivant montre comment appeler cette méthode.
publishMessageToHermesKafka: function(tmfEventPayload) {
new HermesEventPublisher().publishEventToHermesKafka(tmfEventPayload);
},