MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Mendapatkan pengecualian saat melakukan block() pada objek Mono yang saya dapatkan kembali dari objek ReactiveMongoRepository

Memblokir itu buruk, karena mengikat utas menunggu tanggapan. Ini sangat buruk dalam kerangka reaktif yang memiliki sedikit utas, dan dirancang sedemikian rupa sehingga tidak ada dari mereka harus diblokir secara tidak perlu.

Ini adalah hal yang harus dihindari oleh kerangka kerja reaktif, jadi dalam hal ini Anda hanya akan berhenti melakukannya:

Kode baru Anda, sebaliknya, bekerja secara asinkron. Utas tidak diblokir, karena tidak ada yang benar-benar terjadi hingga repositori mengembalikan nilai (dan kemudian lambda yang Anda berikan ke savedQuote.subscribe() dijalankan, mencetak hasil Anda ke konsol.)

Namun, kode baru masih belum optimal / normal dari perspektif aliran reaktif, karena Anda melakukan semua logika Anda dalam metode berlangganan. Hal normal yang harus kita lakukan adalah serangkaian panggilan flatMap/map untuk mengubah item dalam aliran, dan menggunakan doOnNext() untuk efek samping (seperti mencetak nilai):

stockQuoteClient.getQuoteStream()
            .log("quote-monitor-service")
            .flatMap(quoteRepository::insert)
            .doOnNext(result -> System.out.println("I saved a quote! Id :: " + result.getId())))
            .subscribe();

Jika Anda melakukan pekerjaan serius dengan aliran reaktor / reaktif, ada baiknya membacanya secara umum. Mereka sangat kuat untuk pekerjaan non-pemblokiran, tetapi mereka membutuhkan cara berpikir (dan pengkodean) yang berbeda dari Java yang lebih "standar".




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Apa keuntungan menggunakan database bebas skema seperti MongoDB dibandingkan dengan database relasional?

  2. Cara menulis aplikasi python yang mendukung banyak database

  3. tidak dapat melakukan panggilan istirahat

  4. Bagaimana cara menjalankan SlaveOk di Mongoose?

  5. Dorong dan Setel Operasi dalam Pembaruan MongoDB yang Sama