스크립트 소비자 구성

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 4분
  • 스크립트를 사용하여 Kafka 환경에서 데이터를 임포트하고 처리합니다.

    시작하기 전에

    • 필요한 역할: integration_hub_admin
    • 이 소비자는 구독이 스트리밍 연결 필요합니다. 자세한 내용은 https://www.servicenow.com/now-platform/workflow-data-fabric.html 문서를 참조하십시오.
    • ServiceNow 스트림 커넥트 설치 관리자 [com.glide.hub.stream_connect.installer] 플러그인이 필요합니다.

    이 태스크 정보

    소비자를 구성하려면 두 개의 기록을 생성해야 합니다.
    1. 데이터를 임포트하고 처리하는 방법을 지정하는 소비자 기록입니다.
    2. 소비자에 대한 데이터 스트림을 정의하는 Kafka 스트림에 대한 기록입니다.
    이 작업은 소비자 생성을 다룹니다. Kafka 스트림 생성에 대한 지침은 다음 문서를 참조하십시오 Kafka 스트림 생성.

    프로시저

    1. 다음으로 이동 모두 > 통합 허브 > 소비자 > 스크립트 소비자.
    2. 새로 만들기를 선택합니다.
    3. 양식에서 필드에 내용을 입력합니다.
      표 1. 스크립트 소비자
      필드 설명
      이름 스크립트 소비자의 이름입니다.
      제공 보장 노드 오류가 있는 경우 수신 메시지에 대한 배달 보장을 지정하는 옵션입니다. 다음 중 하나를 선택하십시오.
      • 손실은 없지만 중복: 모든 메일은 한 번 이상 배달됩니다. 일부 메시지는 두 번 이상 배달될 수 있습니다.
      • 한 번 또는 전혀 전달하지 않음: 메시지가 두 번 이상 배달되지 않습니다. 일부 메시지는 전혀 전달되지 않을 수 있습니다.
      직렬화 형식 메시지의 직렬화 형식입니다. 다음 중 하나를 선택하십시오.
      • 일반 텍스트: 일반 텍스트 메시지에 대해 이 옵션을 선택합니다. 이것이 기본 형식입니다.
      • 인코딩됨: Avro 형식의 Apache 메시지에 대해 이 옵션을 선택합니다. 일반 텍스트 메시지를 Avro 형식으로 변환하려면 스키마가 필요합니다. 스키 마 레지스트리 필드에서 스키마 레지스트리를 선택합니다. 스키마에 대한 자세한 내용은 다음 문서를 참조하십시오 스트리밍 연결의 스키마 관리.
      이벤트 소비자 Kafka 주제에서 받은 메시지를 소비하는 데 사용할 스크립트입니다.
      애플리케이션 스크립트 소비자에 대한 애플리케이션 범위입니다.
      스키마 레지스트리
      선택한 스키마의 레지스트리입니다. 다음 중 하나를 선택하십시오.
      • 독립 실행형 스키마 레지스트리
      • 융합 스키마 레지스트리

      이 필드는 직렬화 형식인코딩됨으로 설정된 경우에만 나타납니다.

      융합 스키마 레지스트리의 경우 받은 메시지의 스키마 ID가 스키마 테이블에 없는 경우 시스템은 구성된 REST 연결을 사용하여 스키마를 동적으로 임포트합니다.

    4. 저장을 선택합니다.

    이 예시에서는 메시지를 처리하기 위한 샘플 스크립트를 보여줍니다. 여기에는 utc_timestamp 필드, UTC 시간대의 문자열 유형 필드 및 다음을 포함하는 메타데이터 필드가 포함됩니다.
    • timestampEpoch, 데이터 유형: long
    • 파티션, 데이터 유형: int
    • 오프셋, 데이터 유형: long
    • dataCenter, 데이터 유형: 문자열
    (function process(messages) {
      for (var i = 0; i < messages.length; i++) {
        var m = messages[i];
    
        var headerParts = [];
        for (var j = 0; j < m.headers.length; j++) {
          headerParts.push('header[' + j + ']_key=' + m.headers[j].key + ' | header[' + j + ']_value=' + m.headers[j].value);
        }
    
        var line = [
          'message_key='     + m.key,
          'message_body='    + m.message,
          'partition='       + m.metadata.partition,
          'offset='          + m.metadata.offset,
          'datacenter_id='   + m.metadata.datacenter_id,
          'utc_timestamp='   + m.utc_timestamp,
          'timestamp_epoch=' + m.metadata.timestamp_epoch
        ].concat(headerParts).join(' | ');
    
        gs.info('[Kafka Message] ' + line);
      }
    })(messages);
    
    utc_timestamp 필드를 GlideDateTime으로 변환하려면 다음 예제를 참조하십시오.
    
    // Example 1
    var timestamp = new GlideDateTime("2025-08-19 23:31:45");
    console.log(timestamp.getValue());
    
    // Example 2 
    var timestamp2 = new GlideDateTime();
    timestamp2.setNumericValue(1755646305218);
    console.log(timestamp2.getValue());
    
    // Example 3
    var timestamp3 = new GlideDateTime("1970-01-01 00:00:00");
    timestamp3.add(1755646305218);
    console.log(timestamp3.getValue());
    

    다음에 수행할 작업

    Kafka 스트림 생성 이 소비자의 경우. 스트림이 활성화되면 Kafka 환경에서 메시지 수신을 시작할 수 있습니다.