Je suis conscient que depuis Akka 2.4.16, il n'y a pas d'implémentation "à distance" de Reactive Streams. La spécification porte sur un flux exécuté sur une seule machine virtuelle Java. Cependant, en considérant le cas d'utilisation pour impliquer une autre JVM pour un traitement tout en maintenant la contre-pression. L'idée est d'avoir une application principale qui fournit une interface utilisateur exécutant un flux. Par exemple, ce flux a une étape effectuant des calculs lourds qui devraient fonctionner sur une machine différente. Je suis intéressé par les moyens d'exécuter les flux de manière distribuée - je suis tombé sur quelques articles montrant quelques idées:Façons de maintenir la contre-pression dans les flux Akka impliquant plusieurs JVMs
- Connexion flux via TCP en utilisant HTTP Akka (Stackoverflow)
- avec Artère Simplifier à un certain mesure (Stackoverflow, Akka Blog)
- acteurs dans un intégration flux (Answer from Viktor Klang, Akka Docs)
Quelles autres solutions sont là? Y at-il des inconvénients significatifs à ce qui précède? Des caractéristiques spéciales à prendre en compte?
Mise à jour: Cette question n'est pas limitée à un seul cas d'utilisation. Je suis généralement intéressé par tous les moyens possibles de travailler avec des flux dans un environnement distribué. Cela signifie, par exemple. il peut impliquer un seul flux qui intègre les acteurs avec .mapAsync
ou par ex. il pourrait y avoir deux flux distincts sur deux machines communiquant via Akka HTTP. La seule exigence est que la contre-pression doit être appliquée entre tous les composants.
Je pense que vous ne comprenez pas quelque chose. Alors ... comment pouvez-vous avoir un flux inter-jvm? Eh bien ... en ayant des composants qui résident réellement dans différents jvm. Maintenant, vous devez comprendre que les composants dans ce cas particulier seront les acteurs. Alors ... vous avez juste besoin de créer un FlowShape/Sink/Source avec un 'acteur à distance 'et Artery s'occupera de la messagerie. –
Je suis totalement d'accord avec votre commentaire - selon le blog, Artery maintient la pression inverse lorsque ces deux acteurs communiquent entre eux. Ma question vise plutôt à comprendre si, par ex. l'utilisation de '.mapAsync' pour intégrer des acteurs distants dans un flux a le même résultat: avoir un flux qui traite quelque chose sur une machine différente. Plus généralement demandé: Quels sont les moyens de mettre en œuvre des cours d'eau traversant les frontières de la JVM? – Toaditoad