Ich bin ziemlich Neuling zu Akka Streams und Akka HTTP.
Ich möchte einen einfachen HTTP-Server generieren, der aus dem Inhalt eines Ordners eine ZIP-Datei generieren und an den Client senden kann.
Die org.zeroturnaround.zip.ZipUtil macht die Erstellung einer Zip-Datei sehr einfach, benötigt aber ein outputStream
.
Hier ist meine Lösung (in Scala Sprache geschrieben):
%Vor%Diese Lösung funktioniert, behält aber den gesamten Inhalt im Speicher und ist daher nicht skalierbar.
Ich denke, der Schlüssel zur Lösung ist, dies zu verwenden:
%Vor%aber ich weiß nicht, wie ich es benutzen soll. : - (
Irgendwelche Hilfe bitte?
Versuchen Sie es
%Vor%Sie erhalten erst Zugriff auf den OutputStream, sobald die Quelle materialisiert ist. was nicht sofort passieren könnte. Theoretisch könnte sich die Quelle auch mehrfach materialisieren, also sollten Sie damit umgehen können.
Ich hatte dasselbe Problem. Um es backpressy-kompatibel zu machen, musste ich artificial InputStream
schreiben, was später in Source
via StreamConverters.fromInputStream(() => input)
umgewandelt wird, was wiederum von deiner Akka-Http DSL complete
-Richtlinie zurückkommt.
Hier ist was ich geschrieben habe.
%Vor%Wenn Sie Fehler in meinem Code finden, lassen Sie es mich wissen.
Tags und Links scala akka akka-http akka-stream