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!