Estoy ocupado con Reactivo concepto de estos días. He comprendido dos conceptos distintos como sistema reactivo y programación reactiva . Además, sé sistema reactivo es un concepto más amplio que contiene cuatro propiedades:
- Sensible
- Elástico
- escalable
- Evento conducido
La Imagen de referencia: medium.com
Mi problema es sobre Reactivo de programación , entendí que su objetivo es la programación asincrónica según el modelo observable / suscriptor.
La Imagen de referencia: https://hub.packtpub.com/introduction-reactive-programming/
Now I'm confused about the difference between Reactive Programming and Message Queue. I have had some experience in Message Oriented Middleware and related standards such as JMS and I think Reactive Programming is the same using messaging queue in listener mode not blocking mode.
I wanted to be clear in Reactive Programming real concept.
Reactive Programming is a new name for old concepts. It means prefer event-driven computing over request-reply computing. Or 'push' versus 'pull'. So instead of writing code that waits for something to arrive, you define callbacks that are executed when something happens. The Observer pattern is a good example of reactive programming and so is the Hollywood Principle ("Don't call us, we'll call you").
In JMS terms, you are doing reactive programming if you defined a MessageListener on your consumer: MessageConsumer.setMessageListener(MessageListener listener)
Then your API or other code can decide what to process in the meantime and if something arrives, from a queue or topic, that callback is invoked.
La alternativa, utilizando MessageConsumer.receive(long timeout)
, no es la programación reactiva. Usted está bloqueando el flujo actual hasta que llegue el siguiente mensaje.
Pensando en una forma orientada a eventos o reactiva toma un poco de un salto a veces, pero vale la pena el esfuerzo.
Cuando se mira en el propio sistema, yo diría que una infraestructura construida con temas es un sistema reactivo . Una infraestructura construida con colas no lo es.