Slide 1

Slide 1 text

Domando a Programação Reativa com Vert.x Eder Ignatowicz Senior Software Engineer @ederign

Slide 2

Slide 2 text

“Now, every company is a software company” — Forbes

Slide 3

Slide 3 text

INSERT DESIGNATOR, IF NEEDED (EDIT ON MASTER SLIDE) Join developers.redhat.com 3

Slide 4

Slide 4 text

Reactive Systems

Slide 5

Slide 5 text

Responsive

Slide 6

Slide 6 text

Resilient

Slide 7

Slide 7 text

Elastic

Slide 8

Slide 8 text

Message Driven

Slide 9

Slide 9 text

Responsive Message Driven Elastic Resilient Reactive Systems

Slide 10

Slide 10 text

Vert.x

Slide 11

Slide 11 text

Application Platform

Slide 12

Slide 12 text

Runs on JVM

Slide 13

Slide 13 text

Asynchronous APIs

Slide 14

Slide 14 text

Polyglot

Slide 15

Slide 15 text

Simple

Slide 16

Slide 16 text

Why?

Slide 17

Slide 17 text

APIs

Slide 18

Slide 18 text

Hello World

Slide 19

Slide 19 text

Verticles

Slide 20

Slide 20 text

Join developers.redhat.com 20 public class HelloWorldVerticle extends AbstractVerticle { … @Override public void start( Future fut ) { vertx.setPeriodic( 1000, l -> { vertx.eventBus() .publish( "hello-bus", new JsonObject( Json.encodePrettily( new Message( "HelloWorld Message: " + new Date() ))));} ); vertx.eventBus() .consumer( "hello-bus", m -> { JsonObject json = ( JsonObject ) m.body(); logger.info( "Receiving " + json.getString( "id" ) + " : " + json.getString( "name" ) );} ); } }

Slide 21

Slide 21 text

Threading Model Event Loops

Slide 22

Slide 22 text

Event Loops vs Blocking APIs

Slide 23

Slide 23 text

Hybrid Threading Model

Slide 24

Slide 24 text

Scaling

Slide 25

Slide 25 text

Distributed Event Bus

Slide 26

Slide 26 text

Extended to the browser

Slide 27

Slide 27 text

Demo

Slide 28

Slide 28 text

System 1 … System n OpenShift R E S T A P I Vert.x Cluster R E S T C L I E N T Distributed Event Bus system.process.in Processor Verticle system.process.in system.process.out.x system.process.out.no_system Audit Verticle system.process.out.x system.process.out.no_system External System processing JS Bridge Verticle system.process.out.x system.process.in system.process.out.x system.process.in Log Verticle system.process.in

Slide 29

Slide 29 text

System 1 … System n R E S T A P I OpenShift

Slide 30

Slide 30 text

System 1 … System n R E S T A P I Vert.x Cluster R E S T C L I E N T Distributed Event Bus system.process.in OpenShift

Slide 31

Slide 31 text

System 1 … System n R E S T A P I Vert.x Cluster R E S T C L I E N T Distributed Event Bus system.process.in Processor Verticle system.process.in system.process.out.x system.process.out.no_system OpenShift

Slide 32

Slide 32 text

System 1 … System n R E S T A P I Vert.x Cluster R E S T C L I E N T Distributed Event Bus system.process.in Processor Verticle system.process.in system.process.out.x system.process.out.no_system Audit Verticle system.process.out.x system.process.out.no_system External System processing OpenShift

Slide 33

Slide 33 text

System 1 … System n R E S T A P I Vert.x Cluster R E S T C L I E N T Distributed Event Bus system.process.in Processor Verticle system.process.in system.process.out.x system.process.out.no_system Audit Verticle system.process.out.x system.process.out.no_system External System processing JS Bridge Verticle system.process.out.x system.process.in system.process.out.x system.process.in OpenShift

Slide 34

Slide 34 text

System 1 … System n R E S T A P I Vert.x Cluster R E S T C L I E N T Distributed Event Bus system.process.in Processor Verticle system.process.in system.process.out.x system.process.out.no_system Audit Verticle system.process.out.x system.process.out.no_system External System processing JS Bridge Verticle system.process.out.x system.process.in system.process.out.x system.process.in Log Verticle system.process.in OpenShift

Slide 35

Slide 35 text

Join developers.redhat.com @ederign

Slide 36

Slide 36 text

plus.google.com/+RedHat linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHatNews Thank you!