콘텐츠로 이동

가이드 목록 | 이전: 개요 | 다음: Raw messaging 신뢰성

Socket pattern 선택

이 장의 계약 소유 문서Core socket 스펙 목차가 다룬다. 이 챕터는 통신 요구에 맞는 socket pattern을 고르는 기준을 비교한다.

Message 방향, peer 선택 방식과 framing 요구를 기준으로 pattern을 고른다.

요구 사항 Pattern
일대일 통신 PAIR
Topic 배포 PUB/SUB
Subscription을 관찰하는 proxy XPUB/XSUB
비동기 client와 worker DEALER
명시적인 peer routing ROUTER
외부 byte-stream client STREAM

공통 수신 방식

Raw socket은 일반적으로 poller와 whole-message receive를 함께 사용한다. Socket을 ZLINK_POLLIN으로 등록해 기다린 뒤 socket 종류에 맞는 receive 함수를 한 번 호출해 record 전체를 받는다.

  • PAIR는 zlink_recv()를 사용한다.
  • SUB는 topic을 별도로 반환하는 zlink_subscribe()를 사용한다.
  • XPUB은 subscription 알림에 zlink_xpub_recv()를 사용한다.
  • DEALER는 일반 DATA에 zlink_recv()를 사용하고 request reply는 zlink_completion_recv()로 받는다.
  • ROUTER는 peer와 불투명 reply token을 반환하는 zlink_router_recv()를 사용한다.
  • STREAM은 첫 bind 또는 connect 전에 RAW(zlink_recv())와 PACKET(zlink_stream_recv_packet()) 중 하나를 고른다.

PAIR·DEALER는 zlink_recv(), ROUTER는 zlink_router_recv(), SUB·XSUB는 zlink_subscribe()가 record의 모든 part를 caller가 제공한 zlink_msg_t 배열에 채운다. 용량이 부족하면 record를 보존하고 ZLINK_RECV_BUFFER_TOO_SMALL을 반환한다. 계약은 Socket 공통이 소유한다.

Monitor handle과 generic timer도 같은 poller에 등록할 수 있다.

Routing id로 연결 종료

zlink_disconnect_rid()는 routing id가 일치하는 peer connection의 종료를 요청한다. Receive metadata로 peer를 식별했지만 endpoint string을 저장하지 않았을 때 사용한다.

상세 가이드