Redis Sink 커넥터
Redis Sink 커넥터
Redis sink 커넥터는 Pulsar 토픽에서 메시지를 가져와 Redis 데이터베이스에 저장하는 커넥터예요. Pulsar의 데이터를 인메모리 데이터 스토어인 Redis에 써 넣을 때 사용해요.
참고: 모든 Pulsar 커넥터는 download page에서 내려받을 수 있어요.
출처: 문서
본문
구성 (Configuration)
Redis sink 커넥터의 구성에는 다음과 같은 프로퍼티가 있어요.
프로퍼티 (Property)
| 이름 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
| redisHosts | String | true | " " (빈 문자열) | 연결할 Redis 호스트의 쉼표 구분 목록이에요. |
| redisPassword | String | false | " " (빈 문자열) | Redis에 연결하는 데 사용하는 비밀번호예요. |
| redisDatabase | int | true | 0 | 연결할 Redis 데이터베이스예요. |
| clientMode | String | false | Standalone | Redis 클러스터와 상호작용할 때의 클라이언트 모드예요. 사용 가능한 옵션은 다음과 같아요. Standalone, Cluster |
| autoReconnect | boolean | false | true | Redis 클라이언트가 자동으로 재연결할지 여부예요. |
| requestQueue | int | false | 2147483647 | Redis에 큐잉되는 최대 요청 수예요. |
| tcpNoDelay | boolean | false | false | 지연 없는 TCP(no delay)를 활성화할지 여부예요. |
| keepAlive | boolean | false | false | Redis에 keepalive를 활성화할지 여부예요. |
| connectTimeout | long | false | 10000 | 연결 시 타임아웃되기까지 기다리는 시간(밀리초)이에요. |
| operationTimeout | long | false | 10000 | 작업이 타임아웃으로 표시되기까지의 시간(밀리초)이에요. |
| batchTimeMs | int | false | 1000 | Redis 작업 시간(밀리초)이에요. |
| batchSize | int | false | 200 | Redis 데이터베이스에 쓰는 배치 크기예요. |
예제 (Example)
Redis sink 커넥터를 사용하기 전에 Pulsar 서비스를 시작할 경로(PULSAR_HOME)에 다음 방법 중 하나로 구성 파일을 만들어야 해요.
- JSON
{
"configs": {
"redisHosts": "localhost:6379",
"redisPassword": "mypassword",
"redisDatabase": "0",
"clientMode": "Standalone",
"operationTimeout": "2000",
"batchSize": "1",
"batchTimeMs": "1000",
"connectTimeout": "3000"
}
}
- YAML
configs:
redisHosts: "localhost:6379"
redisPassword: "mypassword"
redisDatabase: 0
clientMode: "Standalone"
operationTimeout: 2000
batchSize: 1
batchTimeMs: 1000
connectTimeout: 3000
사용법 (Usage)
이 예시는 Pulsar Redis 커넥터를 사용해 Redis 데이터베이스에 레코드를 쓰는 방법을 보여줘요.
- Redis 서버를 시작해요.
docker pull redis:5.0.5
docker run -d -p 6379:6379 --name my-redis redis:5.0.5 --requirepass "mypassword"
- Pulsar 서비스를 로컬 standalone 모드로 시작해요.
bin/pulsar standalone
NAR 파일이 connectors/pulsar-io-redis-5.0.0-M2.nar 경로에 있는지 확인하세요.
- 다음 방법 중 하나로 Pulsar Redis 커넥터를 로컬 실행(local run) 모드로 시작해요.
bin/pulsar-admin sinks localrun \
--archive $PWD/connectors/pulsar-io-redis-5.0.0-M2.nar \
--tenant public \
--namespace default \
--name my-redis-sink \
--sink-config '{"redisHosts": "localhost:6379","redisPassword": "mypassword","redisDatabase": "0","clientMode": "Standalone","operationTimeout": "3000","batchSize": "1"}' \
--inputs my-redis-topic
bin/pulsar-admin sinks localrun \
--archive $PWD/connectors/pulsar-io-redis-5.0.0-M2.nar \
--tenant public \
--namespace default \
--name my-redis-sink \
--sink-config-file $PWD/redis-sink-config.yaml \
--inputs my-redis-topic
-
앞에서 보여준 JSON 구성 파일을 사용해요.
-
앞에서 보여준 YAML 구성 파일을 사용해요.
-
토픽에 레코드를 발행해요.
bin/pulsar-client produce \
persistent://public/default/my-redis-topic \
-k "streaming" \
-m "Pulsar"
- Docker에서 Redis 클라이언트를 시작해요.
docker exec -it my-redis redis-cli -a "mypassword"
- Redis에서 키/값을 확인해요.
127.0.0.1:6379> keys *
1) "streaming"
127.0.0.1:6379> get "streaming"
"Pulsar"