---
sourceDocument: Referência de API do Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - pt-BR

ft:publication_title :

    - Referência de API do Xanadu

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# HermesEventPublisherOOB - com escopo

# HermesEventPublisherOOB - com escopo {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 5 min. de leitura

A inclusão de script HermesEventPublisherOOB fornece métodos para publicar mensagens no 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 na inclusão de script `HermesEventPublisher`. Para obter informações adicionais sobre como substituir os métodos nesta inclusão de script, consulte [Configure a Estrutura de notificação de eventos do produtor para usar o Serviço de envio de mensagens Hermes](https://servicenow-prod.fluidtopics.net/9enY1TcQIAjtp9YOiOi35w "Se você estiver usando o Serviço de envio de mensagens Hermes em sua instância, deverá configurar a Estrutura de notificação de eventos do produtor para o barramento de mensagens do Kafka.").

Esta inclusão de script é executada no namespace `sn_api_notif_mgmt`.

## HermesEventPublisherOOB - fetchMessageHeaders (mensagem do objeto) {#ariaid-title2}

Retorna os cabeçalhos de mensagem associados à mensagem passada.
Você deve chamar este método antes de publicar a mensagem por meio de Serviço de envio de mensagens Hermes.

A implementação padrão deste método define somente o valor do cabeçalho de <var class="keyword varname">origem</var> como `TMT_SERVICENOW`. Se outros atributos de cabeçalho devem ser passados de volta por este método com base em seus requisitos de negócio, você deve substituir este método na inclusão de script HermesEventPublisher e fornecer os atributos de cabeçalho adicionais.
{#HEPO-fetchMessageHeaders_O__table_uwm_zd1_vzb__entry__3}

| Nome | Tipo | Descrição |
|-|-|-|
| mensagem | Objeto | Evento de TMF a ser publicado no agente de mensagens Hermes Kafka. Para obter detalhes sobre o formato desta mensagem, consulte [o Guia do usuário da API de gestão de eventos TMF688 v4.0.0](https://www.tmforum.org/resources/standard/tmf688-event-management-api-user-guide-v4-0-0/). |
[Tabela 1. Parâmetros]

{#HEPO-fetchMessageHeaders_O__table_uwm_zd1_vzb} {#HEPO-fetchMessageHeaders_O__table_vwm_zd1_vzb__entry__2}

| Tipo | Descrição |
|-|-|
| Objeto | Cabeçalhos do Kafka a serem usados para a mensagem passada. Por exemplo: { origin: 'TMT_SERVICENOW' } |
[Tabela 2. Retorna]

{#HEPO-fetchMessageHeaders_O__table_vwm_zd1_vzb}  
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);
        }
      }
    },

## HermesEventPublisherOOB - fetchPartionKey (mensagem do objeto) {#ariaid-title3}

Retorna a chave de partição associada à mensagem passada.
Você deve chamar este método antes de publicar a mensagem por meio de Serviço de envio de mensagens Hermes.

A implementação padrão para este método retorna um ID exclusivo gerado automaticamente como a chave de partição. Este tipo de implementação garante que as mensagens sejam publicadas uniformemente em todas as partições do tópico. Se você quiser modificar o processamento de partições, deverá substituir este método na inclusão de script HermesEventPublisher. 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.
{#HEPO-fetchPartionKey_O__table_uwm_zd1_vzb__entry__3}

| 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 [o Guia do usuário da API de gestão de eventos TMF688 v4.0.0](https://www.tmforum.org/resources/standard/tmf688-event-management-api-user-guide-v4-0-0/). |
[Tabela 3. Parâmetros]

{#HEPO-fetchPartionKey_O__table_uwm_zd1_vzb} {#HEPO-fetchPartionKey_O__table_vwm_zd1_vzb__entry__2}

| Tipo | Descrição |
|-|-|
| Cadeia de caracteres | Chave de partição do Kafka a ser usada para a mensagem passada. Por exemplo: 6B29FC40-CA47-1067-B31D-00DD010662DA |
[Tabela 4. Retorna]

{#HEPO-fetchPartionKey_O__table_vwm_zd1_vzb}  
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 este 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;
    },

## HermesEventPublisherOOB - fetchTopicsForMessage (mensagem do objeto) {#ariaid-title4}

Retorna todos os tópicos do Kafka associados à mensagem passada.
Este método não está implementado na implementação base, ele retorna somente um sys_id estático. Você deve substituir este método na inclusão de script HermesEventPublisher e fornecer a lógica que determina para qual tópico ou tópicos do Kafka a mensagem passada será enviada.

Para obter informações adicionais sobre como implementar este método, consulte [Configure a Estrutura de notificação de eventos do produtor para usar o Serviço de envio de mensagens Hermes](https://servicenow-prod.fluidtopics.net/9enY1TcQIAjtp9YOiOi35w "Se você estiver usando o Serviço de envio de mensagens Hermes em sua instância, deverá configurar a Estrutura de notificação de eventos do produtor para o barramento de mensagens do Kafka.").
{#HEPO-fetchTopicsForMessage_O__table_uwm_zd1_vzb__entry__3}

| 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 [o Guia do usuário da API de gestão de eventos TMF688 v4.0.0](https://www.tmforum.org/resources/standard/tmf688-event-management-api-user-guide-v4-0-0/). |
[Tabela 5. Parâmetros]

{#HEPO-fetchTopicsForMessage_O__table_uwm_zd1_vzb} {#HEPO-fetchTopicsForMessage_O__table_vwm_zd1_vzb__entry__2}

| Tipo | Descrição |
|-|-|
| Matriz | Lista de sys_ids dos tópicos Kafka para os quais a mensagem deve ser enviada. Localizado na tabela Tópico Kafka \[cmdb_ci_appl_kafka_topic\]. Por exemplo: [ "9d385017c611228701d22104cc95c371", "8438201ec613628421e13105d396d421" ] |
[Tabela 6. Retorna]

{#HEPO-fetchTopicsForMessage_O__table_vwm_zd1_vzb}  
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 este 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 este método para identificar tópicos para os quais uma mensagem será enviada 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

    },

## HermesEventPublisherOOB -- publicarEventToHermesKafka(Object tmfEventPayload) {#ariaid-title5}

Publica a carga aprovada em conformidade com o TMF688 usando o 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 queira mudar o mecanismo de publicação do Kafka, como usar Workflow Studio em vez de usar a API [ProducerV2](https://servicenow-prod.fluidtopics.net/izyf3xBInBflLE8apuNx3Q#ProducerV2ScopedAPI "A API ProducerV2 fornece métodos para publicar mensagens da sua instância ServiceNow em um tópico do Kafka.").
{#HEPO-publishEventHermesKafka_O__table_vrf_q2b_vzb__entry__3}

| 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 o [Guia do usuário da API de gestão de eventos TMF688](https://www.tmforum.org/resources/standard/tmf688-event-management-api-user-guide-v4-0-0/). |
[Tabela 7. Parâmetros]

{#HEPO-publishEventHermesKafka_O__table_vrf_q2b_vzb} {#HEPO-publishEventHermesKafka_O__table_wrf_q2b_vzb__entry__2}

| Tipo | Descrição |
|-|-|
| Nenhum(a) |   |
[Tabela 8. Retorna]

{#HEPO-publishEventHermesKafka_O__table_wrf_q2b_vzb}  
O exemplo de código a seguir mostra como chamar este método.

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


