Reactor バージョンと1.2.8.RELEASE
の管理された依存関係を持つSpring Boot バージョンを使用しています。org.projectoreactor.*
1.1.6.RELEASE
私が直面している問題は、カスタム Codec ( reactor.io.encoding.Codec
) 内にあり、指定された Buffer ( reactor.io.Buffer
) は 1024 バイトに制限されていますが、メッセージはその制限を超えています。メッセージをデコードしようとすると、完全なメッセージではなく (部分的なもののみ)、メッセージ全体が予期されるため、デコードに失敗します。
質問 1:適用関数が正しく機能するようにBuffer bytes
( )を増やすにはどうすればよいですか? reactor.io.Buffer
以下の簡単な例:
public class StringDecoder implements Function<Buffer, String> {
// Buffer is limited to 1024 but the message the client sent
// was 2k
@Override
public String apply(Buffer bytes) {
return bytes.toString();
}
}
質問 2: 適用関数 (上記) をチャンク化するにはどうすればよいですか? これは、Netty のバッファーが限界に達すると、適用関数が独自のバッファーを作成 (およびバッファーを管理) し、最終的にメッセージをデコードして、Reactory/Netty がそれを Consumer に渡すことができることを意味します。
注:私の「メイン」メソッドでは、環境をセットアップするために以下が使用されます。Netty サーバーは Windows で実行され、クライアントは Linux で実行されます。これは TCP の Windows 実装に関連していますか?
// NOTES: ServerSocketOptions sets the max buffer for send and receive to
// something much larger than 1024. Verified with debugger
TcpServerSpec<String, String> spec = new TcpServerSpec<String, String>(NettyTcpServer.class);
spec.env(env);
spec.listen(port);
spec.dispatcher("sync");
spec.codec(new AgentCodec());
spec.consume(connectionHandler(handler));
TcpServer<String, String> tcp = spec.get();
tcp.start().await();