Netty Source 커넥터

Netty Source 커넥터

Netty source 커넥터는 구성된 네트워크 프로토콜을 통해 들어오는 데이터를 받는 포트를 열고, 그 데이터를 사용자가 정의한 Pulsar 토픽에 발행하는 커넥터예요. 네트워크 소켓으로 들어오는 데이터를 Pulsar로 가져올 때 사용해요.

이 커넥터는 컨테이너화된(예: k8s) 배포에서 사용할 수 있어요. 그렇지 않고 커넥터가 process나 thread 모드로 실행 중이라면, 인스턴스들이 포트를 리슨하면서 충돌할 수 있어요.

참고: 모든 Pulsar 커넥터는 download page에서 내려받을 수 있어요.

출처: 문서

본문

구성 (Configuration)

Netty source 커넥터의 구성에는 다음과 같은 프로퍼티가 있어요.

프로퍼티 (Property)

이름 타입 필수 기본값 설명
type String true tcp 데이터가 netty로 전송되는 네트워크 프로토콜이에요. 사용 가능한 옵션은 다음과 같아요.
tcp, http, udp
host String true 127.0.0.1 소스 인스턴스가 리슨하는 호스트 이름 또는 주소예요.
port int true 10999 소스 인스턴스가 리슨하는 포트예요.
numberOfThreads int true 1 들어오는 연결을 수락하고 수락된 연결의 트래픽을 처리하는 Netty TCP 서버의 스레드 수예요.

예제 (Example)

Netty source 커넥터를 사용하기 전에 다음 방법 중 하나로 구성 파일을 만들어야 해요.

  • JSON
{
   "configs": {
      "type": "tcp",
      "host": "127.0.0.1",
      "port": "10911",
      "numberOfThreads": "1"
   }
}
  • YAML
configs:
    type: "tcp"
    host: "127.0.0.1"
    port: 10999
    numberOfThreads: 1

사용법 (Usage)

다음 예시들은 Netty source 커넥터를 TCP와 HTTP와 함께 사용하는 방법을 보여줘요.

TCP

  • Pulsar standalone을 시작해요.
docker pull apachepulsar/pulsar:{version}
docker run -d -it -p 6650:6650 -p 8080:8080 -v $PWD/data:/pulsar/data --name pulsar-netty-standalone apachepulsar/pulsar:{version} bin/pulsar standalone
  • netty-source-config.yaml 구성 파일을 만들어요.
configs:
    type: "tcp"
    host: "127.0.0.1"
    port: 10999
    numberOfThreads: 1
  • 구성 파일 netty-source-config.yaml을 Pulsar 서버에 복사해요.
docker cp netty-source-config.yaml pulsar-netty-standalone:/pulsar/conf/
  • Netty source 커넥터를 다운로드해요.
docker exec -it pulsar-netty-standalone /bin/bash
curl -O http://mirror-hk.koddos.net/apache/pulsar/pulsar-{version}/connectors/pulsar-io-netty-{version}.nar
  • Netty source 커넥터를 시작해요.
./bin/pulsar-admin sources localrun \
--archive $PWD/pulsar-io-5.0.0-M2.nar \
--tenant public \
--namespace default \
--name netty \
--destination-topic-name netty-topic \
--source-config-file $PWD/netty-source-config.yaml \
--parallelism 1
  • 데이터를 소비해요.
docker exec -it pulsar-netty-standalone /bin/bash
./bin/pulsar-client consume -t Exclusive -s netty-sub netty-topic -n 0
  • 다른 터미널 창을 열어 Netty source에 데이터를 보내요.
docker exec -it pulsar-netty-standalone /bin/bash
apt-get update
apt-get -y install telnet
root@1d19327b2c67:/pulsar# telnet 127.0.0.1 10999
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
hello
world
  • 컨슈머 터미널 창에 다음 정보가 나타나요.
----- got message -----
hello
----- got message -----
world

HTTP

  • Pulsar standalone을 시작해요.
docker pull apachepulsar/pulsar:{version}
docker run -d -it -p 6650:6650 -p 8080:8080 -v $PWD/data:/pulsar/data --name pulsar-netty-standalone apachepulsar/pulsar:{version} bin/pulsar standalone
  • netty-source-config.yaml 구성 파일을 만들어요.
configs:
    type: "http"
    host: "127.0.0.1"
    port: 10999
    numberOfThreads: 1
  • 구성 파일 netty-source-config.yaml을 Pulsar 서버에 복사해요.
docker cp netty-source-config.yaml pulsar-netty-standalone:/pulsar/conf/
  • Netty source 커넥터를 다운로드해요.
docker exec -it pulsar-netty-standalone /bin/bash
curl -O http://mirror-hk.koddos.net/apache/pulsar/pulsar-{version}/connectors/pulsar-io-netty-{version}.nar
  • Netty source 커넥터를 시작해요.
./bin/pulsar-admin sources localrun \
--archive $PWD/pulsar-io-5.0.0-M2.nar \
--tenant public \
--namespace default \
--name netty \
--destination-topic-name netty-topic \
--source-config-file $PWD/netty-source-config.yaml \
--parallelism 1
  • 데이터를 소비해요.
docker exec -it pulsar-netty-standalone /bin/bash
./bin/pulsar-client consume -t Exclusive -s netty-sub netty-topic -n 0
  • 다른 터미널 창을 열어 Netty source에 데이터를 보내요.
docker exec -it pulsar-netty-standalone /bin/bash
curl -X POST --data 'hello, world!' http://127.0.0.1:10999/
  • 컨슈머 터미널 창에 다음 정보가 나타나요.
----- got message -----
hello, world!

더 알아보기 (Learn more)