Este documento presenta una introducción a la programación reactiva con RxJava. Explica que RxJava es una librería Java que implementa el patrón Observer para manejar eventos de forma asíncrona mediante observables. También describe algunos de los operadores más comunes como map, filter y zip que permiten transformar y combinar observables de forma declarativa. Finalmente, menciona algunas ventajas de este paradigma como la simplificación de la concurrencia y la mejora de la legibilidad del código.
Esta presentación nos muestra qué es la programación reactiva, en qué consiste, qué nos permite hacer y por qué está tan de moda. Además, podemos ver el uso concreto de esta programación utilizando RxJava.
Autor: Juan Pablo González de Gracia.
Ponencia ofrecida por Oier Blasco en DroidconMAD2013. Sinopsis: La programación reactiva es un paradigma de programación que se centra en los flujos de datos. La presentación trata de cómo podemos usar la programación reactiva para simplificar la programación de tareas asíncronas en android (principalmente las aplicaciones que consumen datos de servicios remotos). Para ello comenzaremos la presentación con una introducción sobre los motivos y los fundamentos de la programación reactiva y como los implementa RxJava (El port open-source hecho por Netflix de la Rx extensions de microsoft). El la segunda para parte de la presentación veremos algunos ejemplos concreto de cómo podemos aplicar estos principios a problemas cotidianos en android.
Presentación sobre Reactive Programming en la JVM para el meetup JVM_MX.
Se mostraron conceptos sobre Reactive Programming y Functional Reactive Programming con la biblioteca RxJava de Netflix.
En esta presentación cubrimos el modelo de memoria del JDK 5/6/7, a partir de JDK 8 hay un cambio en el modelo de memoria, así que no toda la presentación seria valida, aunque algunos conceptos se mantienen.
Los ejemplos se pueden encontrar en https://github.com/ldebello/javacuriosities/tree/master/MemoryManagement
Esta presentación nos muestra qué es la programación reactiva, en qué consiste, qué nos permite hacer y por qué está tan de moda. Además, podemos ver el uso concreto de esta programación utilizando RxJava.
Autor: Juan Pablo González de Gracia.
Ponencia ofrecida por Oier Blasco en DroidconMAD2013. Sinopsis: La programación reactiva es un paradigma de programación que se centra en los flujos de datos. La presentación trata de cómo podemos usar la programación reactiva para simplificar la programación de tareas asíncronas en android (principalmente las aplicaciones que consumen datos de servicios remotos). Para ello comenzaremos la presentación con una introducción sobre los motivos y los fundamentos de la programación reactiva y como los implementa RxJava (El port open-source hecho por Netflix de la Rx extensions de microsoft). El la segunda para parte de la presentación veremos algunos ejemplos concreto de cómo podemos aplicar estos principios a problemas cotidianos en android.
Presentación sobre Reactive Programming en la JVM para el meetup JVM_MX.
Se mostraron conceptos sobre Reactive Programming y Functional Reactive Programming con la biblioteca RxJava de Netflix.
En esta presentación cubrimos el modelo de memoria del JDK 5/6/7, a partir de JDK 8 hay un cambio en el modelo de memoria, así que no toda la presentación seria valida, aunque algunos conceptos se mantienen.
Los ejemplos se pueden encontrar en https://github.com/ldebello/javacuriosities/tree/master/MemoryManagement
Continuando con la introducción al mundo de los Thread en Java
Se pueden encontrar algunos ejemplos en https://github.com/ldebello/javacuriosities/tree/master/Threads
La próxima versión de Drupal delegará parte de su funcionamiento en los componentes de Symfony2.
Para conocer realmente cómo se está proyectando esta evolución, es importante conocer qué es Symfony2, cuáles son sus componentes y unas pinceladas relativas a su funcionamiento.
Para ello, se explican brevemente los componentes que ya están siendo incorporados al core de Drupal8.
Continuando con la introducción al mundo de los Thread en Java
Se pueden encontrar algunos ejemplos en https://github.com/ldebello/javacuriosities/tree/master/Threads
La próxima versión de Drupal delegará parte de su funcionamiento en los componentes de Symfony2.
Para conocer realmente cómo se está proyectando esta evolución, es importante conocer qué es Symfony2, cuáles son sus componentes y unas pinceladas relativas a su funcionamiento.
Para ello, se explican brevemente los componentes que ya están siendo incorporados al core de Drupal8.
Java8 : Más allá de las Expresiones LambdasEudris Cabrera
Mi presentación en el #BarCampRD2015. En esta charla abordamos las bondades de #Java8 haciendo hincapié en las
expresiones lambdas y las características de la programación funcional.
Cursos gratis de programación en Java. JSE Avanzado: asserts, lambda, loggers, patrones de diseño. Orientado a Grado, DAM y DAW. Otros cursos disponibles para Android, Swift, Base de datos, javascript, servicios y procesos...
Comandos, Sentencias y/o Paquetes del Lenguaje de Programación de JavaTania Tellez
Realiza una investigación de Comandos, Sentencias y/o Paquetes del Lenguaje de Programación de Java , para enseguida acomodarlas en una tabla donde indique para que sirve cada una, no olvides ponerle presentación y la Bibliografía
La arquitectura de microservicios persigue maximizar la adaptabilidad de las soluciones mediante la distribución de las responsabilidades del software en servicios con ciclo de vida independiente.
Lograr la independencia de los microservicios es clave para beneficiarse de las ventajas de la arquitectura. Esto exige un profundo entendimiento del dominio funcional, lo que se logra mediante DDD.
Por otro lado la arquitectura hexagonal nos permite estructurar el software de manera que la capa de código relacionada con el dominio funcional no se vea interferida por aspectos tecnológicos, es decir, que dicha capa sólo exprese el Ubiquitous Language, es decir el lenguaje del modelo en según lo llama DDD.
Dicha separación en capas y el invertir las dependencias permite además garantizar la máxima portabilidad del código.
¿Qué vamos a ver?
1. Beneficios
2. Domain Driven Design.
- Conceptos - Big Picture.
- Conceptos - Code architecture.
- Event Storming.
3. Clean Code Architecture.
- Hexagonal Architecture.
- Onion Architecture.
Bots 3.0: Dejando atrás los bots conversacionales con Dialogflow.Paradigma Digital
Atención personalizada y automatización de operativas con IA de forma sencilla con DialogFlow. Al terminar esta charla serás capaz de crear un bot con Dialogflow que solucione tareas sencillas.
En esta charla veremos:
- Cuales son las necesidades de negocio que satisface este tipo de soluciones
- Alternativas en el mercado
- Solución de la necesidad con DialogFlow
Ponente: Alex Asensio - Business Lead en Paradigma Digital
Pragmático y siempre enfocado a objetivos de negocio. Enamorado de la tecnología pero también con la forma en que entregamos software a nuestros clientes, basada en el "empirismo". Tech + Biz mano a mano es la fórmula de éxito que queremos compartir con ellos.
En esta nueva entrega sobre service-mesh veremos el que probablemente se convertirá en el producto de referencia: Istio.
Analizaremos las funcionalidades que aporta, su arquitectura interna, la integración con productos de terceros así como su repercusión
dentro de las arquitecturas actuales. Realizaremos algunos ejemplos para mostrar la funcionalidad y configuración
Ponente:
Abraham Rodríguez está especializado en soluciones cloud native con arquitecturas de microservicios, stack con el que ha trabajado en diversos proyectos. Apasionado defensor de todo lo relacionado con cloud, metodologías ágiles, software libre y devops.
En esta presentación hablamos de Linkerd, uno de los pioneros en el ámbito de las "arquitecturas Service Mesh". Haremos un repaso por la historia de este producto, conoceremos sus principales funcionalidades y tendremos una parte práctica en la que mostraremos su integración en arquitecturas distribuidas junto a Docker y Kubernetes.
¿Cómo hago que mis APIs sean usables?
A través de un ejemplo desarrollado en Spring veremos como realizar todo el proceso de diseño aplicando un conjunto de buenas prácticas que te ayuden en el proceso de toma de decisión a la hora de enfrentarte al diseño de APIs.
En este meetup vamos a analizar uno de los pilares básicos en el proceso de transformación digital de las empresas: API Management. Para ello, explicaremos en qué consiste esta estrategia, y los diferentes conceptos y componentes que intervienen en la misma.Además, para completar esta visión con un caso práctico, mostraremos un ejemplo de implementación mediante uno de los productos OpenSource de API Management más exitoso del mercado: WSO2.
https://www.meetup.com/Microservicios
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!Paradigma Digital
En el pasado Meetup, presentamos Couchbase de manera general, pero ha llegado el momento de ir ahondando en los detalles del producto para conocer todas sus capacidades. Esto nos permitirá estar en mejor disposición para adoptarlo en nuestros proyectos.
En esta ocasión, se hablará de la capa de operaciones y despliegue de Couchbase aunque no con un enfoque tradicional en máquinas físicas, sino siguiendo las buenas prácticas del mercado. Explicaremos y haremos el despliegue en Google Cloud con escalabilidad horizontal elástica y automática.
Para llevar a cabo esto haremos uso, entre otras, de las siguientes tecnologías: Google Cloud, Kubernetes, Python y, por supuesto, Couchbase.
Pondremos a prueba nuestra infraestructura con una pequeña aplicación, si queréis ver los resultados, no os lo podéis perder!
Google Analytics es una herramienta de analítica la que se conoce sólo una parte de su potencial. Además de medir audiencias y su comportamiento, Google Analytics permite priorizar las inversiones en marketing online, recoger comportamientos de Single Page Applications y visualizar datos offline, por ejemplo de CRM y combinarlos con los de visitas online. También es posible recoger datos en tiempo real de ventas, por ejemplo de ecommerce y de dispositivos físicos como bluetooth beacons. Las funcionalidades de Google Analytics, en combinación con Big Query y otros servicios de Google Cloud Platform, la convierte en una de las plataformas más interesantes de analítica para la transformación digital.
Si quieres ver el vídeo en el que fue usada esta presentación, pulsa aquí: https://www.youtube.com/watch?v=2mfIU-NXGXI
Para ver la convocatoria en nuestra web, clic aquí: https://www.paradigmadigital.com/eventos/usar-google-analytics/
La convocatoria a través del grupo de Meetup.com, clic aquí: https://www.meetup.com/es-ES/Front-end-Developers-Madrid/events/231793469/
¿Cómo definir el roadmap de transformación digital? En Paradigma llevamos más de 20 años ayudando a grandes compañías en su camino hacia la digitalización.
En Paradigma creemos que los grandes dragones digitales han desbancado a las empresas tradicionales. La clave para combatir esos dragones es la transformación digital.
El pasado 17 de mayo se celebró en las oficinas de Paradigma Digital el meetup mensual del grupo Python Madrid. Pablo González Fuente, de GMV, nos habló de Python y Flink.
Vídeo del evento: https://www.youtube.com/watch?v=HPfNDL-jIGM
El pasado 17 de mayo se celebró en las oficinas de Paradigma Digital el meetup mensual del grupo Python Madrid. Nuestro compañero Álvaro León nos habló de Kafka y Python.
Vídeo de la presentación: https://www.youtube.com/watch?v=HPfNDL-jIGM
Somos una empresa nativa digital, creada para Internet y con una manera diferente de hacer las cosas. A lo largo de estos últimos 10 años hemos construido una compañía sin jerarquías con una cultura de empresa basada en la libertad y la responsabilidad, que nos ha permitido llegar a ser el partner tecnológico de algunas de las grandes empresas españolas. Te contamos cuál es nuestro secreto. ¿Quieres conocer la cultura digital de Paradigma?
Kubernetes es un proyecto open source de Google cuyo propósito es el de hacer de orquestador de containers. En este seminario se tratará de crear una base partiendo desde los principios más fundamentales, de forma que cualquiera con unos conceptos básicos de contenedores pueda entender cómo funciona kubernetes y qué utilidades nos ofrece a la hora de manejar contenedores.
Ponente: Alfredo Espejel, técnico de sistemas en Paradigma
Alfredo cuenta con casi 10 años de experiencia en administración de sistemas, principalmente Linux. Interesado también en las redes, pero sobre todo en las últimas tendencias y tecnologías.
Vídeo de la charla: https://www.youtube.com/watch?v=zI16fatmnVQ
Más información sobre el meetup: http://www.meetup.com/Cloud-Computing-Spain/events/226254765/
3. 1. Qué es programación reactiva
2. RxJava
3. Experiencia en paradigma
4. Demo
ÍNDICE
#paradigmarx
4. Qué es programación reactiva
¿Por qué ahora?
¿Qué tiene de nuevo?
¿Es la próxima moda pasajera?
¿Ahora se programa todo así?
#paradigmarx
5. RxJava ¿Qué es?
Es una librería Java que implementa las ReactiveX
(extensiones reactivas )
“Se basa en el en la composición asíncrona y
programas basados en eventos , mediante el
uso de secuencias observables.”
#paradigmarx
6. RxJava ¿Qué ventajas nos aporta?
• Legibilidad
• Simplifica la concurrencia (evitando errores de
programación)
• Composición de operadores y funciones
• Permite añadir comportamiento al procesamiento
asíncrono
• Permite utilizar programación síncrona o asíncrona
#paradigmarx
7. RxJava Simplicidad
Como gran ventaja resuelve los problemas que tenía
Java hasta ahora con el manejo de la programación
concurrente. La librería está disponible desde java 6.
Callbacks & Future<T>
#paradigmarx
9. RxJava Patrón Observer
“Es un patrón de diseño que define una
dependencia del tipo uno-a-muchos entre
objetos, de manera que cuando uno de los
objetos cambia su estado, notifica este
cambio a todos los dependientes.”
#paradigmarx
10. RxJava Observable
Los observables son los elementos que
notifican a todos sus observers los cambios.
Para ello es necesario que estos observer se
registren de alguna manera.
#paradigmarx
11. RxJava Push vs Pull
Estamos acostumbrados a un modelo donde le
pedimos al productor un nuevo elemento cada vez que
lo necesitamos (Pull) en vez de que el productor nos
avise de cuando está disponible (Pull). En ocasiones
provoca bloquear al usuario hasta que esté disponible.
Iterable/ Iterator Observable / Observer
T next() onNext(T)
throws Exception onError(Throwable)
returns onCompleted()
#paradigmarx
12. RxJava Eventos
Un elemento observable puede producir 3
tipos de eventos :
• Evento normal
• Evento de terminación
• Evento de error
#paradigmarx
13. RxJava Suscripción
Cuando se realiza una subscripción , se crea un objeto
Subscription que nos da acceso al control sobre el flujo
de la información, permitiendo saber si hay elementos
subscritos o terminar la conexión
#paradigmarx
14. RxJava Subscriber
Existe un elemento Subscriber que implementa ambos
interfaces, observer (lo que nos permite consumir los
eventos del observable) y subscription (con lo que
podremos controlar el flujo desde dentro del objeto)..
#paradigmarx
16. RxJava Creación de observables
• Vacíos : Observable.emtpy()
• Error : Observable.error()
• Con valores concretos : Observable,just(values)
• Custom : Observable.create(details)
• De una lista : Observable.from()
• Rango númerico : Observable.range(from,n)
#paradigmarx
17. RxJava Hot vs Cold Observables
Existe 2 tipos de Observables. Se distinguen principalmente
sobre la manera en la que emiten eventos. Los “calientes”
emiten eventos independientemente de si hay alguien
escuchando, mientras que los “fríos” sólo lo hacen cuando
tienen suscriptores, generando el evento para sus suscriptores
en exclusiva.
#paradigmarx
18. RxJava Operadores
RxJava tiene una serie de operadores que nos permiten
realizar acciones sobre los elementos del observable,
dominarlos, encadenarlos y realizar composiciones de los
mismos será lo que nos de potencia al usar esta librería. Por
citar algunos
#paradigmarx
19. RxJava Transformación
Son operadores que nos van a servir para aplicar
transformaciones a los elementos de origen de manera que
emitamos objetos distintos a la salida
#paradigmarx
20. RxJava Map
Nos permite aplicar una transformación a un elemento de
nuestro objeto para transformarlo en otra cosa.
#paradigmarx
21. RxJava Scan
Aplica una función a cada dato emitido y emite ese valor
secuencialmente
#paradigmarx
24. RxJava FlatMap
Transforma cada elemento del observable en otra sucesión de
observable, se suscribe y los une en único observable
#paradigmarx
25. RxJava GroupBy
Divide el observable inicial en un conjunto de observables en
base a un criterio.
#paradigmarx
26. RxJava Cache
Almacena todos los resultados y los repite siempre igual.
Hay que tener cuidado con la memoria si estamos
manejando Observables infinitos
#paradigmarx
30. RxJava Otros
• First
• Last
• Take , TakeLast,TakeUntil, TakeWhile
• Skip, SkipLast, SkipUntil, SkipWhile
#paradigmarx
31. RxJava Combinacion de Observables
Es muy habitual trabajar con un conjunto de observables
que queramos combinar de alguna manera. Para ello
RxJava nos ofrece operadores que permiten combinarlos
para emitir un resultado.
#paradigmarx
32. RxJava Merge /Concat
Estos operadores se suscriben los observables que le
pasemos como parámetro y unifica los eventos en un
único stream de salida.
#paradigmarx
33. RxJava Switch
Muestra los eventos del último observable que ha
producido eventos. Cuando aparece un elemento en un
observable posterior, se borra la suscripción actual.
#paradigmarx
34. RxJava Zip
Combina elementos de distintos observables y los fusiona
en un único elemento
Es importante que estén lo más sincronizados posible.
#paradigmarx
43. RxJava Timeout
Copia el Observable en la salida salvo que se produzca un
hueco mayor entre eventos al que se pasa por parámetro
#paradigmarx
44. RxJava Try/catch
RxJava nos permite varias formas de utilizar el try catch.
Quizás una de las más legibles sea OnErrorResumeNext
#paradigmarx
45. RxJava ¿Qué operador usar?
Para los principiantes existe un árbol de decisión que nos
ayuda a saber cual es el que deberíamos usar.
Podéis consultarlo en
http://reactivex.io/documentation/operators.html
#paradigmarx
46. RxJava Side effects
Podemos añadir comportamiento a lo que pasa cuando
suceden ciertos eventos. RxJava nos da muchos eventos a los
que suscribirnos, pero no se pueden alterar :
• doOnCompleted() )
• doOnEach()
• doOnError()
• doOnNext()
• doOnRequest()
• doOnSubscribe()
• doOnTerminate()
• doOnUnsubscribe() )
#paradigmarx
47. RxJava Concurrencia
Normalmente la concurrencia la va a decidir el que nos
consume.
Por ejemplo indicando suscribeOn(scheduler) o
ObserverOn(Scheduler)
#paradigmarx
48. RxJava Lazy vs Eager
Cuando utilizamos RxJava estamos aprovechando las ventajas
de una ejecución perezosa. La ejecución se pospone al último
momento posible, esto es cuando un usuario se suscribe.
Esto ayuda a no bloquear recursos innecesariamente
Cuando creemos Observables utilizaremos Defer, utiliza una
factoria de observable y lo hacer de forma perezosa
#paradigmarx
49. RxJava Bloqueante a No bloqueante
Con RxJava pasar de no bloqueante a bloqueante es muy
sencillo utilizando el operador toBlocking(). Lo contrario, es
más complicado porque implica un rediseño del algoritmo,
aunque RxJava da funciones para ello.
#paradigmarx
50. Paradigma + RxJava
Consumo bajo de recursos
Gran rendimiento
Buen compañero con Vert.x
Mejora de legibilidad separando la operación
de la orquestación
#paradigmarx
Qué es : un paradigma de programación cuya base (y de ahí el nombre) es reaccionar a los cambios . Un ejemplo muy gráfico es una hoja de cálculo, cuando tu modificas una celda las demás se ven impactadas.
Por qué ahora: queremos actuar muy rápido al cambio. En estos momentos tenemos muchos orígenes de información y todas ellas tienen velocidades muy distintas. Con esta aproximación podemos ser capaces de adaptarnos a productores muy lentos/rápidos con consumidores a velocidades muy distintas, maximizando el trabajo del procesador (evitando las esperas). Ejemplo : twitter y un consumidor local , Y lo contrario una secuencia de números primos elevados y por el otro lado algo que simplemente mande el número.
Qué tiene de nuevo : está orientado a flujos de información y es una manera muy rápida de propagar los cambios, evita las esperas, y nos permite centrarnos en el qué hay que realizar más que en cuando.
Es la próxima moda pasajera: no lo sé, dependerá de su uso, en cualquier caso , ahora mismo tiene un gran nicho de mercado, especialmente para gobernar interfaces de usuario.
Se programa así : como todo en programación tiene sus casos de uso, y es allí donde debemos aprovechar esta tecnología, no tiene sentido aplicar lo mismo en todas partes.
No es la única implementación de programación reactiva, tenemos por ejemplo en la capa front también reactjs , tenemos rxJx , tenemos Akka con su modelo de actores….
Empezo en .Net allá por el 2009 y lo portó a JVM la gente de Netflix en 2014 después de 2 años de desarrollo
Se utiliza mucho en Android
Legibilidad: Gestión de errores, códido centrado en lo que queremos hacer y n oen el cómo
Paralelizar correctamente siempre es complicado
Composicón : mismo principio que unix, haz poco y bien y luego encadena operadores para obtener cosas complejas
Sincronía : normalmente utilizaremos asíncrona, pero de hecho por defecto es síncrono.
Callback : conlleva al acllaback hell , adema´s no permite composición. STOP BLOCKING
Future: en cuanto haces el get e convierte en bloqueante, y a partir del primer nivel de composición empieza a complicarse sobremanera
Ahora estamos en un proceso de estandarización de estos temas que lo está llevando reactive-streams.org y que quiere estandarizar las ideas que an promovido akka , reactor o rxJava. En principio está pensado que se incluye en la JDK9. Esta estandarización se basa en el consumo de eventos asícnronos y el control del flujo. RxJava nos sigue dando el plus de la multitud de operadores.
Callback : conlleva al acllaback hell , adema´s no permite composición. STOP BLOCKING
Future: en cuanto haces el get e convierte en bloqueante, y a partir del primer nivel de composición empieza a complicarse sobremanera
Ahora estamos en un proceso de estandarización de estos temas que lo está llevando reactive-streams.org y que quiere estandarizar las ideas que an promovido akka , reactor o rxJava. En principio está pensado que se incluye en la JDK9. Esta estandarización se basa en el consumo de eventos asícnronos y el control del flujo. RxJava nos sigue dando el plus de la multitud de operadores.
Java 8 tiene CompletableFuture que tienen callbacks,tanto si va mal como bien. Lo más parecido son los singles. Y lo bueno que tienen los singles es que son completamente lazys
Java 8 también tiene los parallel streams , que tienen muchas semejanzas (son lazy hasta que se utiliza un operador final) , permite filtrado, transformaciones, etc.
Java 8 es pull based y Rxjava es push. Los streams no son reaprovechables y los observables si.
Hablar del Push vs Pull . Los observers , no tienen que estar preguntando si hay un evento nuevo, es el observable quien anuncia al observer que existe un nuevo objeto. Por eso es necesario la suscripción.
Pensemos por ejemplo en las interfaces , un ratón o un teclado. Tu te suscribes a los dispositivos y recibes el chorro de bytes que viene , y no estás preguntando continuamente si existe una nueva pulsación o click.
También se puede hablar aquí de que Observable es el equivalente asíncrono de Iterable. Tendríamos que en síncrono para un objeto tendríamos T getData() y para asíncrono el Future<T> getData y en colleciones tendríamos Iterable y Observable
Los naranjas significan estados finales
Poner ejemplos . Una procesión , nazareno , nazareno , el paso , fin. Si llueve, finaliza con error, evento de terminación =)
El interfaz observer lo que hace es cubrir estos 3 sucesos con onNext() , onCompleted() y onError().
Muy importante, no percibiremos ningún evento de un observable hasta que nos suscribamos a él
Muy importante, no percibiremos ningún evento de un observable hasta que nos suscribamos a él
Como ejemplo de calientes tenemos un tick de reloj o los eventos de teclado, los frios pueden ser hacer llamadas a un servicio web o realizar una operación I/O que son mucho más costosas
Como ejemplo de calientes tenemos un tick de reloj o los eventos de teclado, los frios pueden ser hacer llamadas a un servicio web o realizar una operación I/O que son mucho más costosas
Ojo cada vez que aplicamos un operador obtenemos observable INMUTABLE
Como ejemplo de calientes tenemos un tick de reloj o los eventos de teclado, los frios pueden ser hacer llamadas a un servicio web o realizar una operación I/O que son mucho más costosas
Se puede utilizar para generar una sencuencia de fibonacci
Se puede utilizar para generar una sencuencia de fibonacci
Hablar también de concatMap
Ojo con posibles out of memory
Mencionar que tb existe el replay que tiene más parametrización
Como ejemplo de calientes tenemos un tick de reloj o los eventos de teclado, los frios pueden ser hacer llamadas a un servicio web o realizar una operación I/O que son mucho más costosas
Como ejemplo de calientes tenemos un tick de reloj o los eventos de teclado, los frios pueden ser hacer llamadas a un servicio web o realizar una operación I/O que son mucho más costosas
Como ejemplo de calientes tenemos un tick de reloj o los eventos de teclado, los frios pueden ser hacer llamadas a un servicio web o realizar una operación I/O que son mucho más costosas
En ocasiones se utiliza después de un fork.
Ojo con utilizar retry , en los hot , ya que se producirá el error continuamente
Ojo con utilizar retry , en los hot , ya que se producirá el error continuamente
Ojo con utilizar retry , en los hot , ya que se producirá el error continuamente
Generalmente lo usamos para mostrar mensajes de error o liberar recursos
Como ejemplo de calientes tenemos un tick de reloj o los eventos de teclado, los frios pueden ser hacer llamadas a un servicio web o realizar una operación I/O que son mucho más costosas
Generalmente lo usamos para mostrar mensajes de error o liberar recursos
. Si nadie se suscribe , nada se ejecuta. Tampoco se reservan recursos, ni se abren conexiones ni nada de nada
Explicar por ejemplo con un Observable.from (Base de datos query)
Una proceso de venta que englobaba múltiple sistemas y que tenía problemas para escalar debido a los sistemas que estaba montado. Conseguimos pasar gracias a Vertxx + Rxjava conseguimos multiplicar por 5 las transacciones por segundo.
Escalabilidad