mongo db订户可观察

时间:2020-01-09 13:11:03

标签: mongodb spark-streaming observer-pattern

我使用spark的接收器API编写了spark mongoDB spark sreaming连接器:

 mongoConnector.getCollection[D]() match {
    case Success(collection) => {
      collection.find().subscribe(new Observer[D]() {

        var subscription: Option[Subscription] = None

        override def onSubscribe(subscription: Subscription): Unit = {

          subscription.request(Long.MaxValue)
        }
        override def onNext(result: D): Unit = {
          store(result)
        }

        override def onError(e: Throwable): Unit = println(s"Error: $e")

        override def onComplete(): Unit ={stop("ed")}
      })
    }case Failure(ex) => stop("Failed to connect to MongoDB", ex)}

}

我注意到方法onComplete改变了一切。实际上,我的目标是从mongodb集合中以流方式读取数据。当我选择spark接收器的stop方法时,将一次又一次地读取数据,因此会得到很多重复,但是当我对onComplete方法使用print(“ msg”)时,将读取一个数据,但会在其中插入新数据作业启动后的集合将永远不会被读取。 您能给我打电话怎么让它读取数据吗?

0 个答案:

没有答案