Реактивное потребление коллекции MongoDB в C# - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь использовать коллекцию MongoDB, но я думаю, есть способ сделать это лучше, чем моя реализация.

Это мой текущий подход:

IMongoClient client = new MongoClient("mongodb://localhost");
IMongoDatabase database = client.GetDatabase("example");

        while (true)
        {
            await Task.Delay(1000);

            var collection = database.GetCollection<BsonDocument>("SyncQueue");

            var documents = collection.Find(new BsonDocument()).ToList();

            foreach (var doc in documents)
            {
                ProcessDocAndRemoveFromCollection(doc);
            }

        }

Можно ли сделать что-то подобное ниже?

PSEUDOCODE:

IMongoClient client = new MongoClient("mongodb://localhost");
IMongoDatabase database = client.GetDatabase("example");

    var subject = new Subject<BsonDocument>();
    subject.Subscribe(doc => ProcessDocAndRemoveFromCollection(doc));


    >>>>>>>>>>>>>>>>>>>>>

    when new doc in MongoDB Collection ----> subject.OnNext(doc);            

    <<<<<<<<<<<<<<<<<<<<<

Ключевым моментом является то, что я хочу избежать создания бесконечного l oop для использования коллекции

...