HermesEventPubliherOOB - Com escopo
. HermesEventPubliherOOB a inclusão de script fornece métodos para publicar mensagens para Serviço de envio de mensagens Hermes.
Se você quiser mudar a funcionalidade padrão desta inclusão de script, será necessário substituir os métodos contidos nesta inclusão de script no HermesEventPublisher inclusão de script. Para obter informações adicionais sobre como substituir os métodos nesta inclusão de script, consulte Configure a Estrutura de notificação de evento do produtor para usar Serviço de envio de mensagens Hermes.
Esta inclusão de script é executada no sn_api_notif_mgmt namespace.
HermesEventPubliherOOB - fetchMessageHeaders(mensagem do objeto)
Retorna os cabeçalhos de mensagem associados à mensagem aprovada.
Você deve chamar este método antes de publicar a mensagem por meio do Serviço de envio de mensagens Hermes.
A implementação padrão deste método define somente o. origem valor do cabeçalho para TMT_SERVICEOW . Se quaisquer outros atributos de cabeçalho precisarem ser passados de volta por este método com base em seus requisitos de negócios, você deverá substituir este método no HermesEventPublisher incluir script e fornecer os atributos de cabeçalho adicionais.
| Nome | Tipo | Descrição |
|---|---|---|
| mensagem | Objeto | Evento TMF a ser publicado no agente de mensagens Hermes Kafka. Para obter detalhes sobre o formato desta mensagem, consulte TMF688 Event Management API v4.0.0 . |
| Tipo | Descrição |
|---|---|
| Objeto | Cabeçalhos do Kafka a serem usados para a mensagem aprovada. Por exemplo: |
O exemplo de código a seguir mostra como chamar este método.
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);
}
}
},
HermesEventPubliherOOB - fetchPartionKey(mensagem do objeto)
Retorna a chave de partição associada à mensagem aprovada.
Você deve chamar este método antes de publicar a mensagem por meio do Serviço de envio de mensagens Hermes.
A implementação padrão desse método retorna um ID exclusivo gerado automaticamente como a chave de partição. Esse tipo de implementação garante que as mensagens sejam publicadas uniformemente em todas as partições do tópico. Se você quiser modificar o tratamento de partições, deverá substituir este método no HermesEventPublisher inclusão de script. Outra implementação possível é retornar uma chave de partição exclusiva com base no tipo de evento de mensagem, ou outro atributo, para garantir o sequenciamento de mensagens do mesmo tipo de evento ou atributo.
| Nome | Tipo | Descrição |
|---|---|---|
| mensagem | Objeto | Mensagem a ser publicada usando o agente de mensagens Hermes Kafka. Para obter detalhes sobre o formato desta mensagem, consulte TMF688 Event Management API v4.0.0 . |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | Chave de partição Kafka a ser usada para a mensagem aprovada. Por exemplo: 6B29FC40-CA47-1067-B31D-00DD010662DA |
O exemplo de código a seguir mostra como chamar este método.
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);
}
}
},
O exemplo de código a seguir mostra como substituir esse método para incluir sua própria lógica para determinar a chave de partição a ser usada para a mensagem especificada.
// 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;
},
HermesEventPubliherOOB - fetchTopicsForMessage(mensagem do objeto)
Retorna todos os tópicos do Kafka associados à mensagem aprovada.
Este método não é implementado na implementação de base, ele retorna apenas um sys_id estático. Você deve substituir este método no HermesEventPublisher Incluir script e fornecer lógica que determina para qual tópico ou tópicos do Kafka enviar a mensagem passada.
Para obter informações adicionais sobre como implementar este método, consulte Configure a Estrutura de notificação de evento do produtor para usar Serviço de envio de mensagens Hermes.
| Nome | Tipo | Descrição |
|---|---|---|
| mensagem | Objeto | Mensagem TMF a ser publicada no agente de mensagens Hermes Kafka. Para obter detalhes sobre o formato desta mensagem, consulte TMF688 Event Management API v4.0.0 . |
| Tipo | Descrição |
|---|---|
| Matriz | Lista de sys_ids dos tópicos do Kafka para os quais a mensagem deve ser enviada. Por exemplo: Tabela: Tópico do Kafka [cmdb_ci_appl_kafka_topic] |
O exemplo de código a seguir mostra como chamar este método.
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);
}
}
},
O exemplo de código a seguir mostra como substituir esse método para retornar o mesmo sys_id de registro de tópico para cada mensagem passada.
// 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'];
},
O exemplo de código a seguir mostra como substituir esse método para identificar tópicos para enviar uma mensagem com base no tipo de evento na mensagem.
// 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
},
HermesEventPubliherOOB - publichEventToHermesKafka(Object tmfEventPayload)
Publica a carga compatível com TMF688 aprovada usando Serviço de envio de mensagens Hermes.
Este é um método primário que chama outros métodos para publicar o evento. É improvável que você precise substituir este método, a menos que você queira mudar o mecanismo de publicação do Kafka, como usar Workflow Studio em vez de usar ProdutorV2 API.
| Nome | Tipo | Descrição |
|---|---|---|
| TmfEventPayload | Objeto | Carga de evento compatível com TMF688. Para obter uma descrição do formato desta carga de evento, consulte TMF688 Event Management API Guia do usuário . |
| Tipo | Descrição |
|---|---|
| Nenhum(a) |
O exemplo de código a seguir mostra como chamar este método.
publishMessageToHermesKafka: function(tmfEventPayload) {
new HermesEventPublisher().publishEventToHermesKafka(tmfEventPayload);
},