Я пишу игру! приложение, которое предоставляет REST API, позволяющий пользователям создавать отчеты PDF. Я ограничена требованиями использовать старый Java API для создания фактического отчета. Эта библиотека имеет метод generate(OutputStream out, ...)
, то есть принимает java.io.OutputStream
, где записывает итоговый отчет.Play/Akka интеграция с Java OutputStreams
Моя проблема заключается в интеграции этого с Play/Akka для обслуживания содержимого в Chunked Encoding. Для этого мне нужно создать Enumerator[Array[Byte]]
, который каким-то образом содержит OutputStream
из библиотеки Java. Я придумал рабочее решение, которое использует дуэт PipedOutputSteam
/PipedInputStream
, чтобы передать вывод из библиотеки в Enumerator с помощью Enumerator.fromStream
.
Мне интересно, есть ли лучший способ достичь этого, но я не могу найти явный пример в Akka или Play! документация, которая объединяет Enumerators с OutputStreams. Я знаю, что блокировка IO библиотеки Java является ограничивающим фактором при разработке лучшего решения, но, возможно, есть более простой способ сделать это. Есть предположения?
РАЗВЕЙТЕ
Предполагая, что я использую Enumerator.outputStream
, что было бы безопасным способом перемещения фактического создания отчета к другому актеру (возможно, на другой машине)? Например, я предполагаю, что отправка OutputStream небезопасна (и будет работать только локально).
Спасибо! Я полностью пропустил это! – user510159