ListenTCP
ListenTCP
들어오는 TCP 연결을 수신하고 각 연결에서 줄 구분자를 메시지 구분 기호로 사용해 데이터를 읽는 프로세서예요. 기본 동작은 각 메시지가 단일 FlowFile을 생성하는 것이지만, Batch Size를 더 큰 값으로 늘려 처리량을 높일 수 있어요. Receive Buffer Size는 수신이 예상되는 가장 큰 메시지만큼 커야 해요. 즉, 100kb마다 줄 구분자가 있다면 Receive Buffer Size는 100kb보다 커야 해요. 이 프로세서는 SSL Context Service를 사용하도록 구성해 보안 연결만 허용할 수 있어요. 연결된 클라이언트가 상호 TLS 인증용 인증서를 제시하면 클라이언트 인증서 issuer와 subject의 Distinguished Names가 출력 FlowFiles에 속성으로 추가돼요. 프로세서는 Distinguished Name 값에 기반한 권한 부여를 수행하지 않지만, 이 값들이 출력 FlowFiles에 첨부되므로 이러한 속성을 기반으로 권한 부여를 구현할 수 있어요.
출처: Snowflake 문서
본문
기능 — 일반 제공(Generally Available)
Openflow Snowflake 배포는 AWS, Azure, GCP Commercial 리전의 모든 계정에서 사용할 수 있어요. Openflow BYOC 배포는 AWS Commercial 리전의 모든 계정에서 사용할 수 있어요.
Bundle
org.apache.nifi | nifi-standard-nar
설명 (Description)
들어오는 TCP 연결을 수신하고 각 연결에서 줄 구분자를 메시지 구분 기호로 사용해 데이터를 읽어요. 기본 동작은 각 메시지가 단일 FlowFile을 생성하는 것이지만, Batch Size를 더 크게 해 처리량을 높일 수 있어요. Receive Buffer Size는 수신이 예상되는 가장 큰 메시지만큼 크게 설정해야 해요. 즉, 100kb마다 줄 구분자가 있다면 Receive Buffer Size는 100kb보다 커야 해요. 이 프로세서는 SSL Context Service를 사용해 보안 연결만 허용하도록 구성할 수 있어요. 연결된 클라이언트가 상호 TLS 인증용 인증서를 제시하면 클라이언트 인증서의 issuer와 subject의 Distinguished Names가 출력 FlowFiles에 속성으로 추가돼요. 프로세서는 Distinguished Name 값에 기반한 권한 부여를 수행하지 않지만, 이 값이 출력 FlowFiles에 첨부되므로 이 속성들을 기반으로 권한 부여를 구현할 수 있어요.
태그 (Tags)
listen, ssl, tcp, tls
입력 요구사항 (Input Requirement)
FORBIDDEN (금지)
민감한 동적 속성 지원 (Supports Sensitive Dynamic Properties)
false
속성 (Properties)
| Property | Description |
|---|---|
| Batching Message Delimiter | 여러 메시지가 함께 묶일 때 메시지 사이에 넣을 구분자를 지정해요( |
| Character Set | 수신 데이터의 문자 집합을 지정해요. |
| Client Auth | SSL Context에 사용할 클라이언트 인증 정책이에요. SSL Context Service가 제공되는 경우에만 사용돼요. |
| Local Network Interface | 수신 대기를 특정 LAN으로 제한하는 데 사용할 로컬 네트워크 인터페이스 이름이에요. |
| Max Batch Size | 단일 FlowFile에 추가할 메시지의 최대 수예요. 여러 메시지가 있으면 이 구성된 최대 메시지 수까지 |
| Max Size of Message Queue | 기본 채널에서 프로세서로 전송되는 메시지를 버퍼링하는 데 사용하는 내부 큐의 최대 크기예요. 이 값을 높이면 수신 메시지 급증 시 더 많은 메시지를 메모리에 버퍼링할 수 있지만, 이 급증 동안 프로세서가 사용하는 총 메모리가 늘어나요. |
| Max Size of Socket Buffer | 사용할 socket buffer의 최대 크기예요. 이는 socket buffer가 얼마나 커야 하는지 운영 체제에 알려주는 제안이에요. 너무 낮게 설정하면 데이터를 읽기 전에 버퍼가 가득 차 들어오는 데이터가 버려질 수 있어요. |
| Port | 통신을 위해 수신 대기할 포트예요. |
| Receive Buffer Size | 메시지를 수신하는 데 사용하는 각 버퍼의 크기예요. 들어오는 메시지의 예상 크기에 따라 적절히 조정하세요. |
| SSL Context Service | SSL Context를 얻기 위해 사용할 Controller Service예요. 설정하면 메시지가 보안 연결을 통해 수신돼요. |
| Worker Threads | TCP 연결 서비스에 사용할 수 있는 최대 worker 스레드 수예요. |
| idle-timeout | 데이터가 수신되지 않으면 클라이언트 연결이 열려 있는 시간이에요. 기본값 0초는 클라이언트가 닫을 때까지 연결을 열어 둬요. |
| pool-receive-buffers | 소켓 연결에서 받은 바이트를 처리할 때 프로세서가 사용하는 버퍼의 풀링을 활성화/비활성화해요. 프레임워크는 처리 중 필요에 따라 버퍼를 할당해요. |
관계 (Relationships)
| Name | Description |
|---|---|
| success | 성공적으로 수신된 메시지는 이 관계로 전송돼요. |
쓰기 속성 (Writes attributes)
| Name | Description |
|---|---|
| tcp.sender | 메시지의 전송 호스트예요. |
| tcp.port | 메시지가 수신된 전송 포트예요. |
| client.certificate.issuer.dn | 상호 TLS를 사용하는 연결의 경우 클라이언트 인증서를 발급한 Certificate Authority의 Distinguished Name이 FlowFile에 첨부돼요. |
| client.certificate.subject.dn | 상호 TLS를 사용하는 연결의 경우 클라이언트 인증서 소유자(subject)의 Distinguished Name이 FlowFile에 첨부돼요. |