생산자 이벤트 알림 프레임워크를 구성하여 Hermes 메시징 서비스

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 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. 에 메시지를 Hermes 메시징 서비스게시할 때 메서드의 HermesEventPublisherOOB - fetchTopicsForMessage(객체 메시지) 기본 기능을 사용자 지정 주제 선택기 논리로 재정의합니다.
      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. 메서드를 Hermes 메시징 서비스통해 메시지를 게시하기 전에 지정된 메시지에 대한 헤더를 가져오는 사용자 지정 논리로 메서드의 HermesEventPublisherOOB - fetchMessageHeaders(객체 메시지) 기본 기능을 재정의합니다.
      이러한 헤더에 대한 자세한 내용은 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;
      },