春季启动MongoDB更改流不起作用

时间:2020-06-15 21:18:53

标签: java mongodb spring-boot reactive

我尝试从MongoDB订阅监视,但它不起作用。这是我的订阅代码:

CodecRegistry pojoCodecRegistry = org.bson.codecs.configuration.CodecRegistries.
            fromRegistries(MongoClientSettings.getDefaultCodecRegistry(), org.bson.codecs.configuration.CodecRegistries.fromProviders(PojoCodecProvider
                    .builder()
                    .automatic(true)
                    .build()));
    MongoDatabase db = mongoClient.getDatabase("test").withCodecRegistry(pojoCodecRegistry);
    MongoCollection<Product> collection = db.getCollection("product", Product.class);
    collection.watch(Product.class)
            .subscribe(new Subscriber<ChangeStreamDocument<Product>>() {
                @Override
                public void onSubscribe(Subscription subscription) {
                    System.out.println("onSubscribe");
                }

                @Override
                public void onNext(ChangeStreamDocument<Product> documentChangeStreamDocument) {
                    System.out.println("onNext");

                }

                @Override
                public void onError(Throwable throwable) {
                    System.out.println("onError");

                }

                @Override
                public void onComplete() {
                    System.out.println("onComplete");

                }
            });

我只能在控制台上看到此文本“ onSubscribe”,但不适用于功能onNext。我不知道我在做什么错。

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。 你的mongoDB版本是什么 我将MongoDB版本更新为V4.2,添加了副本集,然后可以正常使用

  obj.set({
    top: topBoundary,
    left: leftBoundary,
  });
  if (obj.width > obj.height) {
    obj.set({
      width: obj.height * (cellWidth / cellHeight),
      height: obj.height,
      scaleX: cellHeight / obj.height,
      scaleY: cellHeight / obj.height,
    });
  } else {
    obj.set({
      width: obj.width,
      height: obj.width * (cellHeight / cellWidth),
      scaleX: cellWidth / obj.width,
      scaleY: cellWidth / obj.width,
    });
  }