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 Issues をご利用ください。
著作権 2015-2020 は原作者に帰属します。
Apache License バージョン 2.0 (「ライセンス」) に基づいてライセンスされています。ライセンスに準拠する場合を除き、このファイルを使用することはできません。ライセンスのコピーは次の場所で入手できます。
http://www.apache.org/licenses/LICENSE-2.0
適用される法律で義務付けられている場合または書面による同意がない限り、ライセンスに基づいて配布されるソフトウェアは、明示または黙示を問わず、いかなる種類の保証や条件もなく、「現状のまま」で配布されます。ライセンスに基づく許可と制限を規定する特定の言語については、ライセンスを参照してください。