§Reactive Streams 整合 (實驗性)
Play 實驗性函式庫尚未準備好供生產環境使用。API 可能會變更。功能可能無法正常運作。
Reactive Streams 是一個新的標準,提供非同步串流的共用 API。
Play 2.4 引進一些包裝器,將 Play 的 Iteratee 和 Enumerator 轉換為 Reactive Streams 物件。這表示 Play 可以與支援 Reactive Streams 的其他軟體整合,例如 Akka Streams、RxJava 和 其他。
此 API 的目的是
- 檢查 Reactive Streams API 是否強大到足以表達 Play 的 iteratee 和 enumerator
- 測試 Play 和 Akka Streams 之間的整合
- 提供實驗性 Akka HTTP 伺服器後端 所需的串流轉換
- 測試 API。
此 API 高度實驗性。它應該相當沒有錯誤,但其方法、類別和概念未來很可能會變更。
§已知問題
- 沒有 Java API。這應該不難實作,但尚未完成。
- 此實作尚未針對 Reactive Streams 測試套件進行測試,因此可能存在一些相容性問題。
- 可能需要將
Input
事件提升到串流中,以確保不會遺失Input.EOF
事件,並為Input.Empty
提供適當的支援。目前在調整迭代器和列舉器時,可能會遺失事件。 - 尚未進行效能調整。
- 需要支援所有主要串流和迭代器類型之間的雙向轉換。
- 文件有限。
§用法
將 Reactive Streams 整合程式庫納入您的專案中。
libraryDependencies += "com.typesafe.play" %% "play-streams-experimental" % "3.0.x"
所有對模組的存取都透過 Streams
物件進行。
以下是一個範例,它將 Future
調整為單一元素的 Publisher
。
val fut: Future[Int] = Future { ... }
val pubr: Publisher[Int] = Streams.futureToPublisher(fut)
請參閱 Streams
物件的 API 文件,以取得更多資訊。
如需更多範例,您可以查看實驗性質的 Akka HTTP 伺服器後端 所使用的程式碼。以下是您可以找到範例的主要檔案
下一頁:Play 2.3
在此文件中發現錯誤?此頁面的原始程式碼可以在 這裡 找到。在閱讀 文件指南 後,請隨時貢獻一個 pull request。有任何問題或建議要分享嗎?請前往 我們的社群論壇 與社群展開對話。