reactive vert.x

18
REACTIVE

Upload: david-dossot

Post on 10-May-2015

1.315 views

Category:

Technology


2 download

DESCRIPTION

The benefits of using reactive extensions with Vert.x. Talk given at the Vancouver Reactive Programmers Meetup: http://www.meetup.com/Vancouver-Reactive-Programmers/events/181183662/ Related source code: https://github.com/ddossot/vertx-react-demo

TRANSCRIPT

Page 1: Reactive Vert.x

REACTIVE

Page 2: Reactive Vert.x

=Erlang + Node.js + Polyglot――――――――――――

JVM

http://vertx.io

Page 3: Reactive Vert.x
Page 4: Reactive Vert.x

Event-Driven

Message passingEvent bus

Non-blocking IO

Page 5: Reactive Vert.x

Scalable

Distributed event-busLocation transparency

Clustered in-memory cache

Page 6: Reactive Vert.x

Resilient

Module and verticle isolationWorker processes

Automatic HA failover

Page 7: Reactive Vert.x

Responsive

“Don't block the event loop!”Time-outs

Event-bus “back pressure”

Page 8: Reactive Vert.x

JavaRubyScala

ClojurePythonGroovy

JavaScript...

PHP

Page 9: Reactive Vert.x

Polyglot Friction

Andrew Cholakianhttp://blog.andrewvc.com/vertx-node-on-ropes

Page 10: Reactive Vert.x

Why ?

https://rx.codeplex.com/

Page 11: Reactive Vert.x

https://github.com/Netflix/RxJava

https://github.com/vert-x/mod-rxvertx

Page 12: Reactive Vert.x
Page 13: Reactive Vert.x

Callback HelleventBus.<JsonObject> sendWithTimeout(metricsAddress, METERS_BUS_REQUEST, 1000L, ar1 -> {

JsonObject metersData = ar1.succeeded() ? ar1.result().body() : new JsonObject();

eventBus.<JsonObject> sendWithTimeout(metricsAddress, HISTOGRAMS_BUS_REQUEST, 1000L, ar2 -> {

JsonObject histogramData = ar2.succeeded() ? ar2.result().body() : new JsonObject();

processData(metersData.mergeIn(histogramData)); });});

Page 14: Reactive Vert.x

Callback HelpObservable<JsonObject> observeMeters = eventBus.<JsonObject, JsonObject> send(metricsAddress, METERS_BUS_REQUEST) .map(msg -> msg.body()) .timeout(1L, SECONDS, from(new JsonObject()));

Observable<JsonObject> observeHistograms = eventBus.<JsonObject, JsonObject> send(metricsAddress, HISTOGRAMS_BUS_REQUEST) .map(msg -> msg.body()) .timeout(1L, SECONDS, from(new JsonObject()));

zip(observeMeters, observeHistograms, (jo1, jo2) -> jo1.mergeIn(jo2)) .subscribe(data -> processData(data));

Page 15: Reactive Vert.x
Page 16: Reactive Vert.x
Page 17: Reactive Vert.x
Page 18: Reactive Vert.x

http://careers.unbounce.com

@ddossot