콘텐츠로 이동

가이드 홈 | 이전: 운영 — 메트릭 · drain · readiness | 다음: 샘플 고르기

13. 주요 타입 사용 색인

이 장의 계약 소유 문서 — 대부분의 표면은 Java 13. 주요 interface 사용 색인이 소유한다. 이 장은 Kotlin이 추가로 제공하는 것만 모은다.

Java 장을 먼저 본다. 여기 없는 이름은 전부 Java와 같다.

1. suspend handler 계약

Java handler는 CompletionStage를 돌려주고, Kotlin 짝은 suspend다. 둘 중 아무거나 구현해도 되고 한 프로젝트에 섞어도 된다 — 등록이 어느 계약인지 보고 맞게 부른다.

받는 것 Java Kotlin
channel request ZLinkRequestHandler ZLinkSuspendingRequestHandler
channel one-way send ZLinkSendHandler ZLinkSuspendingSendHandler
classic fanout event ZLinkFanoutHandler ZLinkSuspendingPublishHandler
Node direct request · send ZLinkRouteRequestHandler · ZLinkRouteSendHandler ZLinkSuspendingRouteRequestHandler · ZLinkSuspendingRouteSendHandler
Spot 앞 packet ZLinkSpotPacketHandler ZLinkSuspendingSpotPacketHandler
Spot 앞 request ZLinkSpotRequestHandler ZLinkSuspendingSpotRequestHandler
구독 이벤트 ZLinkSpotSubscriptionHandler ZLinkSuspendingSpotSubscriptionHandler
timer tick ZLinkSpotTimerHandler ZLinkSuspendingSpotTimerHandler
member Actor 앞 packet · request ZLinkSpotActorSendHandler · ...RequestHandler ZLinkSuspendingSpotActorSendHandler · ...RequestHandler
Entry Spot의 Actor packet · request ZLinkEntrySpotActorSendHandler · ...RequestHandler ZLinkSuspendingEntrySpotActorSendHandler · ...RequestHandler
session typed packet ZLinkTypedSessionPacketHandler ZLinkSuspendingTypedSessionPacketHandler

2. .kotlin() wrapper

Java client에 .kotlin()을 부르면 같은 호출이 suspend 표면으로 바뀐다.

Java .kotlin()이 주는 것
ZLinkClient ZLinkKotlinClient
ZLinkRouteClient ZLinkKotlinRouteClient
ZLinkFanoutClient ZLinkKotlinFanoutClient
ZLinkActorClient ZLinkKotlinActorClient
ZLinkActorManager ZLinkKotlinActorManager

wrapper가 돌려주는 호출 타입도 Kotlin 짝이다 — ZLinkKotlinRequestCall · ZLinkKotlinMessageSendCall · ZLinkKotlinActorCreateCall · ZLinkKotlinLifecycleCall · ZLinkKotlinBoundSession이다.

wrapper는 선택이다. Java 표면을 그대로 쓰고 §3의 await()로 받아도 된다.

3. 확장 함수

wrapper가 없는 자리는 확장 함수가 메운다.

확장 무엇을 바꾸나
CompletionStage<T>.await() 결과를 suspend로 받는다. turn을 안다(§4)
Flow.Publisher<T>.asFlow() 상태 stream을 코루틴 Flow
ZLinkLocationRuntimeQuery.topology(filter, pageSize) 페이지 반복을 Flow
ZLinkSpotHandlerRegistry.addHandler<T>() reified 타입으로 등록
ZLinkFrameworkOptions.routeMesh(name) { ... } MeshNode 등록을 블록으로
ZLinkMeshNodeBuilder.channelName(name) { ... } channel 등록을 블록으로
ZLinkMeshPeerConnections.connect(...) 여러 endpoint를 한 번에
ZLinkFrameworkOptions.configureDispatch { ... } 진단 설정을 블록으로
Application logger/telemetry provider 메시지 흐름과 dispatch error structured record 수신
ZLinkMessage.decode<T>() · messageOf(...) reified decode와 생성
ZLinkStreamConnector.kotlin() · .messages() · .errors() connector를 suspend · Flow
ZLinkStreamConnectorOptions.withLz4StreamCompression() 압축 설정

4. await()를 아무 것으로나 바꾸지 않는다

zlink-framework-kotlinCompletionStage<T>.await()framework turn을 안다. Spot이나 Actor의 turn 안에서 불러도 그 turn의 직렬 실행 보장을 깨지 않는다.

kotlinx.coroutines.future.await도 같은 이름이라 import 하나 차이로 바뀐다. turn 안에서 쓰는 코드라면 어느 쪽을 import했는지 확인한다.

import systems.zlink.framework.kotlin.await   // turn을 아는 쪽

5. 관련 문서