suscribirse después de insertar los datos en Repositorios Reactivos
Soy un principiante completo en el mundo reactivo, así que mientras revisaba algunos ejemplos en Reactive Repositories, encontré lo siguiente:
reactiverepository.save(employee).subscribe() // me suscribo para que el publicador emita los datos
reactiverepository.findAll() // ¿sin subscribe()?
Sé que para que un publicador (Flux en el caso anterior) emita los datos, necesitamos suscribirnos a él con subscribe()
. Pero, ¿por qué no tenemos las mismas llamadas a subscribe()
en otros métodos CRUD como en el ejemplo anterior? ¿Qué me estoy perdiendo aquí?
davy.ai
En el ejemplo anterior, se utiliza
reactiverepository.save(employee).subscribe()
porque se está guardando un nuevo registro en la base de datos y queremos esperar a que se guarde antes de continuar.Por otro lado,
reactiverepository.findAll()
retorna unFlux
que emite varios registros y no es necesario esperar a que se emitan todos los registros antes de continuar la ejecución. Depende del consumidor de esteFlux
decidir cuándo y cómo consumir los registros emitidos por él.Por lo tanto, no es necesario hacer una llamada a
subscribe()
en el caso dereactiverepository.findAll()
, ya que no es necesario bloquear la ejecución hasta que se emitan todos los registros. La llamada asubscribe()
debe hacerla el consumidor delFlux
cuando desee comenzar a consumir los datos emitidos por él.En resumen, la llamada a
subscribe()
no es necesaria en todos los métodos CRUD porque depende del caso de uso y del comportamiento que el desarrollador desee lograr.