HermesEventPublisherOOB - 범위 지정됨

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기10분
  • HermesEventPublisherOOB 스크립트 포함은 .Hermes 메시징 서비스

    이 스크립트 포함의 기본 기능을 변경하려면 HermesEventPublisher 스크립트 포함에서 이 스크립트 포함에 포함된 메서드를 재정의해야 합니다. 이 스크립트 포함의 메서드 재정의에 대한 자세한 내용은 다음 문서를 참조하십시오 생산자 이벤트 알림 프레임워크를 구성하여 Hermes 메시징 서비스.

    이 스크립트 포함은 sn_api_notif_mgmt 네임스페이스에서 실행됩니다.

    HermesEventPublisherOOB - fetchMessageHeaders(객체 메시지)

    전달된 메시지와 연결된 메시지 헤더를 반환합니다.

    Hermes 메시징 서비스통해 메시지를 게시하기 전에 이 메서드를 호출해야 합니다.

    이 메서드의 기본 구현은 원본 헤더 값만 TMT_SERVICENOW로 설정합니다. 비즈니스 요구 사항에 따라 이 메서드에서 다른 헤더 특성을 다시 전달해야 하는 경우 HermesEventPublisher 스크립트 포함에서 이 메서드를 재정의하고 추가 헤더 특성을 제공해야 합니다.

    표 1. 매개변수
    이름 유형 설명
    메시지 객체 Hermes Kafka 메시지 브로커에 게시할 TMF 이벤트입니다. 이 메시지의 형식에 대한 자세한 내용은 TMF688 이벤트 관리 API 사용 설명서 v4.0.0을 참조하십시오.
    표 2. 반환
    유형 설명
    객체 전달된 메시지에 사용할 Kafka 헤더입니다.
    예:
    {
      origin: 'TMT_SERVICENOW'
    }

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    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(객체 메시지)

    전달된 메시지와 연결된 파티션 키를 반환합니다.

    Hermes 메시징 서비스통해 메시지를 게시하기 전에 이 메서드를 호출해야 합니다.

    이 메서드의 기본 구현은 자동 생성된 고유 ID를 파티션 키로 반환합니다. 이 유형의 구현은 메시지가 주제의 모든 파티션에 균등하게 게시되도록 합니다. 파티션 처리를 수정하려면 HermesEventPublisher 스크립트 포함에서 이 메서드를 재정의해야 합니다. 또 다른 가능한 구현은 메시지 이벤트 유형 또는 기타 속성을 기반으로 고유한 파티션 키를 반환하여 동일한 이벤트 유형 또는 특성의 메시지 시퀀싱을 보장하는 것입니다.

    표 3. 매개변수
    이름 유형 설명
    메시지 객체 Hermes Kafka 메시지 브로커를 사용하여 게시할 메시지입니다. 이 메시지의 형식에 대한 자세한 내용은 TMF688 이벤트 관리 API 사용 설명서 v4.0.0을 참조하십시오.
    표 4. 반환
    유형 설명
    문자열 전달된 메시지에 사용할 Kafka 파티션 키입니다.

    예: 6B29FC40-CA47-1067-B31D-00DD010662DA

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    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);
        }
      }
    },

    다음 코드 예제에서는 지정된 메시지에 사용할 파티션 키를 결정하기 위한 고유한 논리를 포함하도록 이 메서드를 재정의하는 방법을 보여 줍니다.

    // 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(객체 메시지)

    전달된 메시지와 연결된 모든 Kafka 주제를 반환합니다.

    이 메서드는 기본 구현에서 구현되지 않으며 정적 sys_id만 반환합니다. HermesEventPublisher 스크립트 포함에서 이 메서드를 재정의하고 전달된 메시지를 보낼 Kafka 주제를 결정하는 논리를 제공해야 합니다.

    이 메서드를 구현하는 방법에 대한 자세한 내용은 다음을 참조하십시오 생산자 이벤트 알림 프레임워크를 구성하여 Hermes 메시징 서비스.

    표 5. 매개변수
    이름 유형 설명
    메시지 객체 Hermes Kafka 메시지 브로커에 게시할 TMF 메시지입니다. 이 메시지의 형식에 대한 자세한 내용은 TMF688 이벤트 관리 API 사용 설명서 v4.0.0을 참조하십시오.
    표 6. 반환
    유형 설명
    배열 메시지를 보내야 하는 Kafka 주제의 sys_ids 목록입니다.
    예:
    [
      "9d385017c611228701d22104cc95c371",
      "8438201ec613628421e13105d396d421"
    ]

    테이블: Kafka 주제 [cmdb_ci_appl_kafka_topic]

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    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);
        }
      }
    },

    다음 코드 예제에서는 전달된 각 메시지에 대해 동일한 토픽 레코드 sys_id 반환하도록 이 메서드를 재정의하는 방법을 보여 줍니다.

    // 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'];
    },

    다음 코드 예제에서는 메시지의 이벤트 유형에 따라 메시지를 보낼 항목을 식별하도록 이 메서드를 재정의하는 방법을 보여 줍니다.

    // 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(객체 tmfEventPayload)

    를 사용하여 전달된 TMF688 호환 페이로드를 Hermes 메시징 서비스게시합니다.

    이벤트를 게시하기 위해 다른 메서드를 호출하는 부모 메서드입니다. ProducerV2 API를 사용하는 대신 사용하는 워크플로우 스튜디오 것과 같이 Kafka 게시 메커니즘을 변경하지 않는 한 이 메서드를 재정의할 필요는 없습니다.

    표 7. 매개변수
    이름 유형 설명
    tmf이벤트 페이로드 객체 TMF688 호환 이벤트 페이로드입니다. 이 이벤트 페이로드의 형식에 대한 설명은 TMF688 이벤트 관리 API 사용 설명서를 참조하십시오.
    표 8. 반환
    유형 설명
    안 함

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

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