私は Akka と Play を使用しているため、ノンブロッキング I/O について調べています。読み取り可能な限り、そのコンテキストで回避できる場合、ブロックは悪い考えですが、これを私のものと連携させることはできません。使用事例:
- ネットワーク経由でファイルを取得します(ここではnioを使用する代替手段が存在しますが、現在はURL.openStreamを使用しています)
- BouncyCastle を使用してファイル (PGP) を復号化します (ここでは InputStream に限定しています)
- 標準 Java GZIP を使用してファイルを解凍します (InputStream に限定)。
- 位置ベースのフラット ファイルであるファイルの各行を読み取り、ケース クラスに変換します (ここでは、読み取り方法に制約はありません。現在は scalax.io.Resource です)。
- Slick/JDBC を使用し続ける (JDBC がブロックしているかどうかは不明)
現在、基本的に InputStreams をずっと使用して動作しています。ただし、理解を深めるために、ノンブロッキング IO でこれを行うことができるかどうかを調査しています。
基本的に、上記の各ステップを適用するパイプラインを介してファイルをストリーミングし、最終的にブロックせずにデータを保持したいと思います。
コードが必要な場合は簡単に提供できますが、一般的なレベルでの解決策を探しています: java.io を使用するライブラリに依存している場合はどうすればよいですか?