MongoDb Watch change stream, используя java - PullRequest
1 голос
/ 07 мая 2020

Я пытаюсь создать 2 отдельных java микросервиса,

одну службу для вставки / обновления записей в mongoDb и другую службу для просмотра коллекции mongoDb и выполнения некоторых операций на основе вставки / обновления, произошедшей в mon go.

Один микросервис для вставки / обновления записи в mon go был создан и работает.

Затем я фактически застрял на втором микросервисе, который будет иметь mon go часы.

MyMainClass.java

public MyMainClass() {
//here i wanted to print the record which got inserted /update in mongo
}
MongoConfig.class

    @Bean
    public MongoDbFactory mongoDbFactory() throws Exception {
       String url = "mongodb://userName:pwd@localhost:port/datbaseName";
       MongoClientURI uri = new MongoClientURI(url);
       MongoClient client = new MongoClient(uri);
       MongoDatabase db = client.getDatabase("datbaseName");
       MongoCollection<Document> coll = db.getCollection("collectionName");
       ChangeStreamIterable<Document> changes = coll.watch();

       changes.forEach(new Block<ChangeStreamIterable<Document>> () {
       @Override public apply(ChangeStreamIterable<Document> t) {
             System.out.println("doc = "+t.getFullDocument);
       })
        return new SimpleMongoDbFactory(uri);
    }

    @Bean
    public MongoTemplate mongoTemplate() throws Exception {
        MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory());
        return mongoTemplate;
    }

Итак, пока я запускаю второй сервер службы, файл MongoConfig подключается к mon go и также запускает часы. Если в случае каких-либо изменений в mongoDb он печатается 'System.out.println ("do c =" + t.getFullDocument);'

Но аналогичным образом, как только я запускаю вторую службу сервер, я хотел, чтобы документированные материалы распечатывались внутри класса MyMainClass. java при любых изменениях в mon go. Так что я могу выполнить некоторые операции с этим документом.

Но я не уверен, как это можно сделать.

Пожалуйста, дайте мне знать, правильно я это делаю или неправильно. И есть ли лучший способ сделать это.

...