2017-08-18 2 views
0

cible:Quel est l'état actuel du fichier asynchrone IO dans les flux akka?

Je voudrais voir le dossier de IO Akka pour être comme asynchrone et non bloquante possible.

Mon état des connaissances à ce jour:

En older project documentation vous pouvez lire ceci:

Remarque

Depuis la version actuelle de Akka (2.3.x) doit soutenir JDK6 , les implémentations d'E/S de fichiers actuellement fournies ne peuvent pas utiliser les opérations d'E/S de fichier asynchrone , telles qu'elles ont été introduites dans JDK7 (et ne wer). Une fois qu'Akka est libre d'exiger JDK8 (à partir de 2.4.x), ces implémentations seront mises à jour pour utiliser les nouvelles API NIO (c'est-à-dire AsynchronousFileChannel).

La version actuelle de l'akka est '2.5.4'. La version actuelle d'akka-stream est '2.11' ou '2.12'. Dans le current documentation la note de abhove est manquante et il est seulement explicitement mentionné que IO de fichier signifie des opérations de blocage qui sont traitées par un répartiteur dédié aux opérations d'E/S.

Dans le fichier 'MANIFEST.MF' à l'intérieur du flux de AKKA-Jar-File il y a une ligne:

Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))" 

donc je suppose qu'il nécessite Java 8.

Il est lié à a question scala fichier asynchrone IO mais son à partir de Janvier 2015. One of the answers contient:

IO Akka, tout en ne fournissant pas le fichier IO dans son coeur, a un module développé par Dario Rexin , qui permet d'utiliser AsynchronousFileChannel avec Akka IO d'une manière très simple. Jetez un oeil à cette bibliothèque pour faire usage: https://github.com/drexin/akka-io-file

Questions:

  1. Comment est l'état actuel de flux AKKA fichier asynchrone IO?
  2. Est-ce que les fichiers de flux akka utilisent l'option 'AsynchronousFileChannel' du Java NIO?
  3. Dois-je faire quelque chose pour utiliser 'AsynchronousFileChannel' à partir de Java NIO?
+0

Il n'y a pas, à ma connaissance, d'IO de fichier asynchrone non bloquant en Java. L'extension NIO2 prend un ExecutorService pour effectuer les opérations d'E/S de blocage. –

Répondre

1
  1. Comment asynchrone est l'état actuel du fichier akka flux IO?

Parcourant le source code montre que FileIO Akka flux utilise java.nio.ByteBuffer et java.nio.channels.FileChannel.Et comme les états documentation, les opérations IO de fichier s'exécutent de manière isolée sur un répartiteur dédié.

Il existe un pull request ouvert qui tente d'utiliser AsynchronousFileChannel. Sur la base des résultats de référence rapportés dans ce PR, le PR pourrait être fermé en faveur d'essayer une approche plus récente avec NIO synchrone comme capturé dans un autre PR.

  1. Est-ce que fichier AKKA flux IO utiliser 'AsynchronousFileChannel' de NIO Java?

No.

  1. Dois-je faire quelque chose à utiliser 'AsynchronousFileChannel' de NIO Java?

Cette question est sans objet, car Akka Streams n'utilise pas AsynchronousFileChannel.