1 Vertx, asynchronous programming and reactive systems
1.1 Being distributed and networked is the norm
1.2 Not living on an isolated island
1.3 There is no free lunch on the network
1.4 The simplicity of blocking APIs
1.5 Blocking APIs waste resources, increase costs
1.6 Asynchronous programming with non-blocking I/O
1.7 Multiplexing event-driven processing: the case of the event loop
1.8 What is a reactive system?
1.9 What else does reactive mean?
1.10 What is Vert.x?
1.11 Your first Vert.x application
1.11.1 Preparing the project
1.11.2 The VertxEcho class
1.11.3 The role of callbacks
1.11.4 So is this a reactive application?
1.12 What are the alternatives to Vert.x?
Part 1: Fundamentals of asynchronous programming with Vert.x
2 Verticles: the basic processing units of Vert.x
2.1 Writing a verticle
2.1.1 Preparing the project
2.1.2 The verticle class
2.1.3 Running and first observations
2.2 More on verticles
2.2.1 Blocking and the event-loop
2.2.2 Asynchronous notification of life-cycle events
2.2.3 Deploying verticles
2.2.4 Passing configuration data
2.3 When code needs to block
2.3.1 Worker verticles
2.3.2 The executeBlocking operation
2.4 So what is really in a verticle?
2.4.1 Verticles and their environment
2.4.2 More on contexts
2.4.3 Bridging Vert.x and non-Vert.x threading models
3 The event-bus: connecting verticles
3.1.1 Point-to-point messaging
3.1.2 Request-reply messaging
3.1.3 Publish / subscribe messaging
3.1.4 So is the event-bus just another message broker?
3.2 The event-bus through an example
3.2.1 Heat sensor verticle
3.2.2 Listener verticle
3.2.3 Sensor data verticle
3.2.4 HTTP server verticle
3.2.5 Bootstrapping the application
3.3 Clustering and the distributed event-bus
3.3.1 Clustering in Vert.x
3.3.2 From event-bus to distributed event-bus
3.4 Reasoning in verticles around the event-bus
3.4.1 When is a Vert.x application well structured?
3.4.2 How about testing?
3.4.3 A JUnit 5 based test example
4 Asynchronous data and event streams
5 Beyond callbacks
Part 2: Developing reactive services with Vert.x
6 What is a reactive application?
7 The web stack
8 State management with databases
9 Integration and messaging with other distributed services
10 Authentication and access control
Part 3: Deploying and operating scalable Vert.x services
11 Horizontal scalability with Vert.x clustering
12 Living in a managed environment
13 Container-native Vert.x services
About the Technology
Vert.x is a mature framework for building reactive applications on the JVM. Designed to handle asynchronous communication effortlessly, Vert.x permits the fewest number of concurrent threads possible. As a result, you automatically get increased scalability, resource efficiency, and dependability, which are big wins for any distributed system. Vert.x’s modular design lends itself perfectly to data processing, IoT gateways, web apps, gaming backends, and more.
Vert.x supports all major JVM languages and asynchronous programming models including callbacks, promises, Scala futures, and Kotlin futures. Hosted by the Eclipse foundation and now in its third major release, Vert.x boasts over seven years of field-tested performance. In addition, Vert.x has been integrated into the Red Hat OpenShift platform as a rapid development tool for cloud native reactive applications.
About the book
Vert.x in Action teaches you to build highly-scalable reactive enterprise applications. In this practical developer’s guide, Vert.x expert Julien Ponge gets you up to speed in the basics of asynchronous programming as you learn to design and code reactive applications. Using the Vert.x asynchronous APIs, you’ll build services including web stack, messaging, authentication, and access control. You’ll also dive into deployment of container-native components with Docker, Kubernetes, and OpenShift. Along the way, you’ll check your app’s health and learn to test its resilience to external service failures.
As a member of the Vert.x core team, Julien Ponge has up-close-and-personal experience you can trust. The lessons and examples in this book center on principles that will easily transfer to other reactive technologies, empowering you to apply what you learn using Vert.x or the reactive tech of your choice. With the rising tide of microservices and distributed systems, reactive programming is flowing into the mainstream. With Vert.x in Action, you’ll be sailing smoothly!
- An introduction to asynchronous programming and reactive systems
- Building reactive services
- Responding to external service failures
- Horizontal scaling
- Deploying with Docker, Kubernetes, and OpenShift