다음을 사용하도록 생산자 이벤트 알림 프레임워크 구성 Hermes 메시징 서비스

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 6분
  • 인스턴스에서 사용하는 Hermes 메시징 서비스 경우 Kafka 메시지-버스에 대한 생산자 이벤트 알림 프레임워크를 구성해야 합니다.

    시작하기 전에

    필요한 역할: 관리자

    Hermes 메시징 서비스 활성화해야 합니다. 자세한 내용은 Activating the Hermes Messaging Service 문서를 참조하십시오.

    다음 코드 조각에서는 를 사용하여 Hermes 메시징 서비스주제에 메시지를 보내는 데 필요한 요소를 구성하기 위해 호출해야 하는 HermesEventPublisher 메서드를 보여 줍니다. 그런 다음 ProducerV2 API가 호출되어 메시지를 보냅니다.
    publishEventToHermesKafka: function(tmfEventPayload) {
      if (gs.nil(tmfEventPayload)) {
        return;
      }
      this.publishMessageThroughProducerV2API(tmfEventPayload)
    
    },
    
    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);
        }
      }
    },

    프로시저

    1. Hermes 메시징 서비스에 대한 보안 연결을 설정합니다.
      자세한 내용은 Set up a secure connection to the Hermes Messaging Service 문서를 참조하십시오.
    2. 에 메시지를 게시할 때 사용자 지정 주제 선택기 논리로 메서드의 기본 기능을 HermesEventPublisherOOB - fetchTopicsForMessage(객체 메시지) 재정의합니다 Hermes 메시징 서비스.
      HermesEventPublisher - fetchTopicsForMessage() 메서드에서 지정된 메시지를 보낼 Kafka 주제를 결정하는 논리를 제공해야 합니다. 그런 다음 이러한 주제 기록의 sys_ids 배열로 반환합니다.

      메시지 페이로드의 속성을 기반으로 주제를 선택하거나 구현에서 단일 주제만 사용하는 경우 각 메시지에 대해 동일한 주제를 반환할 수 있습니다.

      다음 예제에서는 전달된 각 메시지에 대해 동일한 주제 레코드 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
      
      },
    3. 메서드의 HermesEventPublisherOOB - fetchPartionKey(객체 메시지) 기본 기능을 사용자 지정 논리로 재정의하여 메시지를 Hermes 메시징 서비스.
      다음 목록에는 반환할 수 있는 몇 가지 파티션 키 유형과 관련 이점이 포함되어 있습니다.
      • 자동으로 생성된 고유 ID입니다. 이 유형의 파티션 키를 사용하면 메시지가 주제 파티션 간에 균등하게 게시됩니다. 이것이 기본 구현입니다.
      • 메시지 이벤트 유형(또는 다른 메시지 속성)에 따른 고유 키입니다. 이 유형의 파티션 키는 해당 이벤트 유형(또는 다른 메시지 속성)의 메시지 순서를 보장합니다.
      • 동일한 파티션 키로 인해 메시지가 동일한 파티션에서 전송됩니다. 이 유형의 파티션 키는 Kafka 소비자 그룹 수준에서 메시지의 엄격한 시퀀싱을 보장합니다.
      다음 예제는 각 파티션 키에 대해 임의 ID를 반환하는 방법을 보여줍니다.
      fetchPartionKey: function(message) { 
      // Implement it for custom partition key 
      // Random message keys ensure better distribution of message across partitions. 
      // Same message keys ensure that message always goes to the same partition.   
      // This ensures strict sequencing of messages at the Kafka consumer group level. 
      return gs.generateGUID(); 
      },
      다음 예제에서는 메시지의 이벤트 유형에 따라 파티션 키를 반환하는 방법을 보여줍니다.
      // Implementation where the partition key is decided based on the event type.
      fetchPartionKey: function(message) { 
      
      var eventType = message.eventType;
      var partionKey = fetchPartionKeyForMessage(eventType);
      return partionKey;
      },
    4. 메서드의 HermesEventPublisherOOB - fetchMessageHeaders(객체 메시지) 기본 기능을 사용자 지정 논리로 재정의하여 지정된 메시지의 헤더를 가져옴 통해 Hermes 메시징 서비스메시지를 게시합니다.
      이러한 헤더에 대한 자세한 내용은 Apache Kafka 설명서를 참조하십시오.
      다음 예제에서는 메시지의 이벤트 유형에 따라 헤더를 반환하는 방법을 보여줍니다.
      fetchMessageHeaders: function(message) { 
      // Returned headers are based on the event type passed in the message object. 
        var eventType = message.eventType;
        var headerObject = fetchHeadersBasedOnEventType(eventType);
        return headerObject;
      },