예제

본 장에서는 AnyLink Kafka 어댑터를 사용한 예제를 설명합니다.

1. 개요

다음은 Kafka 기본 거래 구성입니다. 본 예제에서 아웃바운드 거래는 SYNC 방식으로 구성하며 잡 스케줄을 사용하여 수행합니다.

figure example kafka pattern
기본 거래 구성도

다음은 거래를 수행하는 과정에 대한 설명입니다.

  • 인바운드 거래

    인바운드 어댑터를 통해 Broker로부터 Kafka 메시지를 수신 후 서비스 플로우를 수행합니다.

  • 아웃바운드 거래

    1. Kafka 아웃바운드 어댑터를 통해 요청 출력 전문을 Broker로 전송합니다.

    2. Broker 로부터 응답 입력 전문을 수신합니다.

전문 구성

예제에서 사용할 전문 구성은 다음과 같습니다. 전문은 모두 JSON 형식의 메시지를 사용합니다.

  • 인바운드 거래

    Physical Name Logical Name Field Type JsonKey

    key

    key

    string

    none

    value

    value

    string

    none

  • 아웃바운드 거래

    • 요청 메시지

      Physical Name Logical Name Field Type JsonKey

      topic

      topic

      string

      none

      partition

      partition

      string

      none

      timestamp

      timestamp

      string

      none

      key

      key

      string

      none

      value

      value

      string

      none

    • 응답 메시지

      Physical Name Logical Name Field Type JsonKey

      topic

      topic

      string

      none

      partition

      partition

      string

      none

      timestamp

      timestamp

      string

      none

      offset

      offset

      string

      none

  1. Kafka 인바운드 거래에서는 string 타입의 데이터를 받을 수 있도록 구성해야 합니다.

  2. Kafka 아웃바운드 거래에서는 상기와 같은 규격에 맞춰서 구성해야 합니다.

  3. 메시지 형식은 자유롭게 지정 가능합니다.(Json, XML, etc.)

2. 어댑터 생성

AnyLink WebAdmin에 로그인한 후 초기화면에서 [구성관리] > [어댑터]를 선택한 후 어댑터 목록화면[Add] 버튼을 클릭하면 어댑터 등록 화면이 나타납니다. 어댑터 생성에 대한 자세한 내용은 어댑터 설정을 참고합니다.

AnyLink WebAdmin의 접속 및 사용법에 관한 자세한 내용은 AnyLink WebAdmin 안내서를 참고합니다.

Kafka 어댑터를 생성합니다.

figure create adapter
Kafka 어댑터 생성 화면

3. 엔드포인트 생성

어댑터 생성이 완료되면 [어댑터] 탭에서 등록된 어댑터를 조회하고, 조회된 어댑터를 클릭하면 어댑터 상세정보 화면으로 이동합니다.

[엔드포인트 목록] 탭 아래 [Add] 버튼을 클릭하면 엔드포인트 등록 화면이 나타납니다. 엔드포인트 생성에 대한 자세한 설명은 엔드포인트 설정을 참고합니다.

3.1. 인바운드 엔드포인트 생성

다음은 인바운드 엔드포인트를 생성하는 예제입니다.

figure create kafka endpoint in example
인바운드 엔드포인트 등록 화면 - 기본정보
  • [연결정보] 탭

    다음과 같이 연결 정보를 입력합니다.

    figure kafka inbound ep conn
    인바운드 엔드포인트 등록 화면 - [연결정보]
    항목 설정값

    bootstrapServers

    192.168.11.64:9092

    topic

    ManualTopic

    securityProtocol

    PLAINTEXT

    Group ID

    ManualTopic-Consumer-Group

    autoOffsetReset

    latest

    enableAutoCommit

    yes

    autoCommitIntervalMs

    5000

    fetchMaxBytes

    52428800

    maxPollRecords

    500

    maxPartitionFetchBytes

    1048576

    keyDeserializer

    org.apache.kafka.common.serialization.StringDeserializer

    valueDeserializer

    org.apache.kafka.common.serialization.StringDeserializer

    Isolation Level

    read_uncommitted

  • [큐 설정] 탭

    다음과 같이 큐 정보를 입력합니다.

    figure kafka inbound ep queue example
    인바운드 엔드포인트 등록 화면 - [큐 설정]
    항목 설정값

    폴링 간격(ms)

    5000

  • [상세설정] 탭

    다음과 같이 거래 정보를 입력합니다.

    figure kafka inbound ep biztx example
    인바운드 엔드포인트 등록 화면 - [상세 설정]
    항목 설정값

    거래그룹/거래

    manual.kafkaGrp.inBiztx

3.2. 아웃바운드 엔드포인트 생성

figure create kafka endpoint out example
아웃바운드 엔드포인트 등록 화면 - 기본정보
  • [연결정보] 탭

    다음과 같이 연결 정보를 입력합니다.

    figure kafka outbound ep conn
    아웃바운드 엔드포인트 등록 화면 - [연결정보]
    항목 설정값

    bootstrapServers

    192.168.11.64:9092

    topic

    ManualTopic

    securityProtocol

    PLAINTEXT

    ACKs

    1

    retries

    2147483647

    compressionType

    none

    deliveryTimeoutMs

    120000

    requestTimeoutMs

    30000

    maxBlockMs

    60000

    maxRequestSize

    1048576

    bufferMemory

    33554432

    keySerializer

    org.apache.kafka.common.serialization.StringSerializer

    valueSerializer

    org.apache.kafka.common.serialization.StringSerializer

4. 스튜디오 리소스 생성

본 절에서는 스튜디오에서 리소스를 생성하는 방법에 대해서 설명합니다.

AnyLink 스튜디오 사용법에 대한 자세한 내용은 AnyLink 스튜디오 안내서를 참고합니다.

예제는 하나의 거래 그룹을 부모 노드로 하는 인바운드 거래와 아웃바운드 거래로 구성됩니다.

거래 노드는 다음의 과정을 통해 생성됩니다.

  • 거래그룹 생성

    거래 그룹의 생성 설정은 다음과 같습니다.

    항목 설정값

    패키지

    manual

    거래 이름

    Kafka예제

    거래 ID

    kafkaGrp

  • 거래 생성

    거래 그룹으로 선언된 "Kafka예제" 노드에 거래로 선언된 "Kafka인바운드거래" 및 "Kafka아웃바운드거래" 노드를 추가합니다.

    figure create kafka biztx
    거래 생성
    • Kafka 인바운드 거래 생성

      항목 설정값

      노드 타입

      거래

      거래 ID

      inBiztx

      거래 이름

      Kafka인바운드거래

    • Kafka 아웃바운드 거래 생성

      항목 설정값

      노드 타입

      거래

      거래 ID

      outBiztx

      거래 이름

      Kafka아웃바운드거래

  • 메시지

    예제에서는 각 거래에서 사용할 바디 메시지를 생성해야 합니다.

    figure create kafka message
    메시지 생성
  • 아웃바운드 룰 생성

    아웃바운드 거래에서는 아웃바운드 룰을 호출하여 Kafka 아웃바운드를 실행합니다.

    거래 노드의 컨텍스트 메뉴에서 [새로만들기] > [아웃바운드 룰] > [Kafka 아웃바운드 룰]을 선택하면 Kafka 아웃바운드 룰 생성 화면이 나타납니다.

    figure create kafka orule
    아웃바운드 룰 생성
  • 플로우 생성

    Kafka 인바운드 및 아웃바운드 거래는 모두 호출 서비스로 플로우를 지정합니다.

    figure create kafka flow
    플로우 생성

5. 스튜디오 리소스 설정

본 절에서는 생성한 리소스를 설정하는 방법에 대해서 설명합니다.

AnyLink 스튜디오 사용법에 대한 자세한 내용은 AnyLink 스튜디오 안내서를 참고합니다.

5.1. 인바운드 거래 설정

다음은 AnyLink 스튜디오를 사용한 인바운드 거래를 작성하는 과정에 대한 설정값입니다. 본 예제에서 사용된 거래는 oneway 방식으로 구동되며, Json 타입의 전문을 요청 메시지로 사용합니다.

인바운드 거래의 작성 방법에 대해서는 일반적인 거래 설정 패턴을 벗어나지 않기 때문에 자세한 설정값은 생략합니다.

  1. 예제에서 사용된 거래의 구조는 다음과 같습니다.

    figure kafka inbound biztx tree
    거래 트리
  2. 다음과 같이 전문을 받은 뒤 응답을 주지 않고 종료하는 플로우를 작성합니다.

    figure kafka inbound flow
    인바운드 플로우

5.2. 아웃바운드 거래 설정

본 예제에서 사용된 거래는 SYNC 방식으로 구동되며, Json 타입의 전문을 요청 메시지로 사용합니다.

  1. 예제에서 사용된 거래의 구조는 다음과 같습니다.

    figure kafka outbound biztx tree
    거래 트리
  2. 다음과 같이 예제에서 호출될 플로우를 작성합니다.

    figure kafka outbound flow
  3. 상기 플로우의 KAFKA 액티비티에서 호출할 아웃바운드 룰은 다음과 같습니다.

    응답 수신 방식은 SYNC를 사용합니다.

    figure kafka outbound rule
    아웃바운드 룰

    아웃바운드 룰 설정 정보는 다음과 같습니다.

    항목 설정값

    아웃바운드룰 ID

    kafkaOutboundRule

    아웃바운드룰 이름

    Kafka아웃바운드룰

    요청처리 타임아웃(ms)

    10000

    Endpoint(Group)

    KAFKA_EP_OUT

    요청 메시지

    ReqMsg (Json)

    정상 응답 메시지

    ResMsg (Json)

6. 배포

거래그룹/거래 배포정보를 설정합니다.

figure kafka deploy
거래 배포 화면

거래 배포 설정화면에 대한 자세한 사용법은 AnyLink 스튜디오 안내서를 참고합니다.

7. 거래 테스트

아웃바운드 거래를 실행하기 위해 WebAdmin의 잡 스케줄 기능을 사용합니다. 필드 설정 시 key, value 필드만 값을 설정합니다.

figure kafka job
잡 스케줄 설정

다음은 잡 스케줄을 통한 거래 테스트 화면입니다.

figure kafka out trace
아웃바운드 거래 트랜잭션 로그
figure kafka out reqOut
아웃바운드 요청 메시지
figure kafka out resIn
아웃바운드 응답 메시지
figure kafka in trace
인바운드 거래 트랜잭션 로그
figure kafka in reqIn
인바운드 요청 메시지