RSocket은 TCP, WebSocket 및 Aeron과 같은 바이트 스트림 전송에 사용되는 바이너리 프로토콜입니다.
단일 연결을 통해 전달되는 비동기 메시지를 통해 다음과 같은 대칭 상호 작용 모델을 활성화합니다.
http://rsocket.io에서 자세히 알아보세요.
master
브랜치는 이제 1.2.x
라인 개발 전용입니다.
릴리스 및 마일스톤은 Maven Central을 통해 제공됩니다.
예:
repositories {
mavenCentral()
maven { url ' https://repo.spring.io/milestone ' } // Reactor milestones (if needed)
}
dependencies {
implementation ' io.rsocket:rsocket-core:1.2.0-SNAPSHOT '
implementation ' io.rsocket:rsocket-transport-netty:1.2.0-SNAPSHOT '
}
스냅샷은 oss.jfrog.org(OJO)를 통해 제공됩니다.
예:
repositories {
maven { url ' https://maven.pkg.github.com/rsocket/rsocket-java ' }
maven { url ' https://repo.spring.io/snapshot ' } // Reactor snapshots (if needed)
}
dependencies {
implementation ' io.rsocket:rsocket-core:1.2.0-SNAPSHOT '
implementation ' io.rsocket:rsocket-transport-netty:1.2.0-SNAPSHOT '
}
플러그인 환경설정에서 Intellij에 google-java-format을 설치하세요. 환경 설정 -> 기타 설정 -> google-java-format 설정에서 활성화하세요.
다음을 사용하여 자동으로 포맷하세요.
$./gradlew goJF
디버깅을 돕기 위해 프레임을 인쇄할 수 있습니다. 프레임을 인쇄하려면 로거 io.rsocket.FrameLogger
디버그하도록 설정하세요.
package io . rsocket . transport . netty ;
import io . rsocket . Payload ;
import io . rsocket . RSocket ;
import io . rsocket . core . RSocketConnector ;
import io . rsocket . transport . netty . client . WebsocketClientTransport ;
import io . rsocket . util . DefaultPayload ;
import reactor . core . publisher . Flux ;
import java . net . URI ;
public class ExampleClient {
public static void main ( String [] args ) {
WebsocketClientTransport ws = WebsocketClientTransport . create ( URI . create ( "ws://rsocket-demo.herokuapp.com/ws" ));
RSocket clientRSocket = RSocketConnector . connectWith ( ws ). block ();
try {
Flux < Payload > s = clientRSocket . requestStream ( DefaultPayload . create ( "peace" ));
s . take ( 10 ). doOnNext ( p -> System . out . println ( p . getDataUtf8 ())). blockLast ();
} finally {
clientRSocket . dispose ();
}
}
}
기본적으로 RSocket을 더 쉽게 사용할 수 있도록 수신 페이로드를 복사합니다. 페이로드를 복사하면 성능과 대기 시간이 저하됩니다. 제로 복사를 사용하려면 이 기능을 비활성화해야 합니다. 복사를 비활성화하려면 RSocketFactory
에 payloadDecoder
인수를 포함해야 합니다. 이렇게 하면 기본 전송에서 데이터를 복사하지 않고도 페이로드를 관리할 수 있습니다. 작업이 끝나면 페이로드를 해제해야 합니다. 그렇지 않으면 메모리 누수가 발생합니다. 올바르게 사용하면 대기 시간이 줄어들고 성능이 향상됩니다.
RSocketServer . create ( new PingHandler ())
// Enable Zero Copy
. payloadDecoder ( PayloadDecoder . ZERO_COPY )
. bind ( TcpServerTransport . create ( 7878 ))
. block ()
. onClose ()
. block ();
RSocket clientRSocket =
RSocketConnector . create ()
// Enable Zero Copy
. payloadDecoder ( PayloadDecoder . ZERO_COPY )
. connect ( TcpClientTransport . create ( 7878 ))
. block ();
버그, 질문 및 토론이 있는 경우 Github 문제를 사용하세요.
저작권 2015-2020은 원저자에게 있습니다.
Apache 라이센스 버전 2.0("라이센스")에 따라 라이센스가 부여되었습니다. 라이센스를 준수하는 경우를 제외하고는 이 파일을 사용할 수 없습니다. 다음에서 라이센스 사본을 얻을 수 있습니다.
http://www.apache.org/licenses/LICENSE-2.0
해당 법률에서 요구하거나 서면으로 동의하지 않는 한, 라이선스에 따라 배포되는 소프트웨어는 명시적이든 묵시적이든 어떠한 종류의 보증이나 조건 없이 "있는 그대로" 배포됩니다. 라이선스에 따른 허가 및 제한 사항을 관리하는 특정 언어는 라이선스를 참조하세요.