Detta är inte publicerat ännu, men i Alpakkas mastergren, MongoSource.apply
tar en typparameter:
object MongoSource {
def apply[T](query: Observable[T]): Source[T, NotUsed] =
Source.fromPublisher(ObservableToPublisher(query))
}
Därför, med den kommande 0.18-versionen av Alpakka, kommer du att kunna göra följande:
val source: Source[TodoMongo, NotUsed] = MongoSource[TodoMongo](todoCollection.find())
Observera att source
här antar att todoCollection.find()
returnerar en Observable[TodoMongo]
; justera typerna efter behov.
Under tiden kan du helt enkelt lägga till ovanstående kod manuellt. Till exempel:
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))
}
Observera att MyMongoSource
är definierad att ligga i akka.stream.alpakka.mongodb.scaladsl
paket (som MongoSource
), eftersom ObservableToPublisher
är en paket-privat klass. Du skulle använda MyMongoSource
på samma sätt som du skulle använda MongoSource
:
val source: Source[TodoMongo, NotUsed] = MyMongoSource[TodoMongo](todoCollection.find())