Dette er ikke offentliggjort endnu, men i Alpakkas mastergren, MongoSource.apply
tager en type parameter:
object MongoSource {
def apply[T](query: Observable[T]): Source[T, NotUsed] =
Source.fromPublisher(ObservableToPublisher(query))
}
Derfor vil du med den kommende 0.18-udgivelse af Alpakka være i stand til at gøre følgende:
val source: Source[TodoMongo, NotUsed] = MongoSource[TodoMongo](todoCollection.find())
Bemærk at source
her antager, at todoCollection.find()
returnerer en Observable[TodoMongo]
; juster typerne efter behov.
I mellemtiden kan du blot tilføje ovenstående kode manuelt. For eksempel:
package akka.stream.alpakka.mongodb.scaladsl
import akka.NotUsed
import akka.stream.alpakka.mongodb.ObservableToPublisher
import akka.stream.scaladsl.Source
import org.mongodb.scala.Observable
object MyMongoSource {
def apply[T](query: Observable[T]): Source[T, NotUsed] =
Source.fromPublisher(ObservableToPublisher(query))
}
Bemærk, at MyMongoSource
er defineret til at ligge i akka.stream.alpakka.mongodb.scaladsl
pakke (som MongoSource
), fordi ObservableToPublisher
er en pakke-privat klasse. Du ville bruge MyMongoSource
på samme måde som du ville bruge MongoSource
:
val source: Source[TodoMongo, NotUsed] = MyMongoSource[TodoMongo](todoCollection.find())