Vert.x can be used for many different things so we provide a wide range of examples demonstrating usage of Vert.x in many different situations - from getting started with a hello world example in Maven or Gradle to a range of web application examples.
Start with the main README file and follow pointers.
If you are interested in articles, tutorials and talks about Vert.x, please check the learning materials page.
Vert.x contains several different components designed to make it easier for you to write compelling reactive applications in a range of different languages.
Vert.x is highly modular and you just use the bits that you need and nothing more.
And don't forget - Vert.x is a library not a restrictive container so you don't have to only use components provided by Vert.x. You can also use Vert.x with all the usual libraries that you like.
The sections below describe most of the major components of Vert.x, with links to the source repository, manuals in different languages, and API documentation.
On this page are only listed components that are part of the official Vert.x stack. You can find a lot more components, and see the high diversity of the Vert.x ecosystem, on the Vert.x awesome page.
Vert.x core contains fairly low level functionality including support for HTTP, TCP, file system access, and various other features. You can use this directly in your own applications, and it's used by many of the other components of Vert.x
Java | Manual | API |
JavaScript | Manual | API |
Groovy | Manual | API |
Ruby | Manual | API |
Ceylon | Manual | API |
Kotlin | Manual | API |
Scala | Manual | API |
Php | Manual | API |
Vert.x-Web is a tool-kit for writing sophisticated modern web applications and HTTP microservices.
Java | Manual | API |
JavaScript | Manual | API |
Groovy | Manual | API |
Ruby | Manual | API |
Ceylon | Manual | API |
Kotlin | Manual | API |
Scala | Manual | API |
Php | Manual | API |
Vert.x provides a few different asynchronous clients for accessing various data stores from your application. You don't have to use these clients - you could use clients direct from the vendor if you prefer (e.g. MongoDB provide their own cool async and reactive clients), but these provide a simple async API which is available in various languages.
Java | Manual | API |
JavaScript | Manual | API |
Groovy | Manual | API |
Ruby | Manual | API |
Kotlin | Manual | API |
Scala | Manual | API |
Php | Manual | API |
Vert.x provides a couple of components to make your applications more reactive.
Don't like callback-style APIs? Vert.x provides Rx-ified (using RxJava) versions for most of its APIs so you can use those if you prefer.
RxJava is a great choice when you want to perform complex operations on multiple asynchronous streams of data.
RxJava 1 | Manual | API |
RxJava 2 | Manual | API |
RxJS | Manual | API |
RxGroovy | Manual | API |
Vert.x supports reactive streams so your applications can interoperate with other reactive systems such as Akka or Project Reactor.
Java | Manual | API |
Kotlin coroutines for Vert.x, gives you super powers such as async/await or Go-like channels. This enables you to write your verticle code in a familiar sequential style.
Kotlin | Manual | API |
Vert.x offers various component to build microservice-based applications.
This component lets you publish, lookup and bind to any type of services.
Java | Manual | API |
JavaScript | Manual | API |
Groovy | Manual | API |
Ruby | Manual | API |
Kotlin | Manual | API |
Scala | Manual | API |
Php | Manual | API |
Vert.x MQTT provides client/server for MQTT. The server is able to handle connections, communication and messages exchange with remote MQTT clients. The client is 3.1.1 MQTT compliant with a bunch of methods for connecting/disconnecting to a broker, publishing messages and subscribing to topics.
Java | Manual | API |
JavaScript | Manual | API |
Groovy | Manual | API |
Ruby | Manual | API |
Kotlin | Manual | API |
Scala | Manual | API |
Php | Manual | API |
Vert.x provides simple APIs for auth in your applications. We also provide a few out of the box implementations.
The Common Auth APIs
Java | Manual | API |
JavaScript | Manual | API |
Groovy | Manual | API |
Ruby | Manual | API |
Ceylon | Manual | API |
Kotlin | Manual | API |
Scala | Manual | API |
Php | Manual | API |
Auth implementation using Apache Shiro
Java | Manual | API |
JavaScript | Manual | API |
Groovy | Manual | API |
Ruby | Manual | API |
Ceylon | Manual | API |
Kotlin | Manual | API |
Scala | Manual | API |
Php | Manual | API |
Vert.x provides a simple SMTP mail client so you can send emails from your applications.
Java | Manual | API |
JavaScript | Manual | API |
Groovy | Manual | API |
Ruby | Manual | API |
Kotlin | Manual | API |
Scala | Manual | API |
Php | Manual | API |
A client to interact with RabbitMQ.
Java | Manual | API |
JavaScript | Manual | API |
Groovy | Manual | API |
Ruby | Manual | API |
Kotlin | Manual | API |
Scala | Manual | API |
Php | Manual | API |
A client to interact with Apache Kafka.
Java | Manual | API |
JavaScript | Manual | API |
Groovy | Manual | API |
Ruby | Manual | API |
Kotlin | Manual | API |
Scala | Manual | API |
Php | Manual | API |
Vert.x provides a Java Connector Architecture (JCA) adaptor which allows it to interoperate with any JavaEE application server.
Vert.x offers various bridges to extend the Event Bus beyond the JVM
Vert.x offers various component to keep your Vert.x application on track when running in production
This component captures metrics from Vert.x core components and exposes them using Dropwizard.
Java | Manual | API |
JavaScript | Manual | API |
Groovy | Manual | API |
Ruby | Manual | API |
Kotlin | Manual | API |
Scala | Manual | API |
Php | Manual | API |
This component lets you interact with your Vert.x application using a CLI interface.
Java | Manual | API |
JavaScript | Manual | API |
Groovy | Manual | API |
Ruby | Manual | API |
Kotlin | Manual | API |
Scala | Manual | API |
Php | Manual | API |
These docker images, available from the DockerHub, let you run Vert.x applications in Docker containers.
Vert.x supports clustering and HA out of the box. Cluster group management is implemented in cluster managers which are pluggable. The default cluster manager uses Hazelcast.
Cluster manager implementation that uses Hazelcast. This is the default in the 'vertx' command line.
Vert.x services are a simple and effective way to encapsulate reusable functionality for use elsewhere. Services are deployed using a service identifier which decouples the user from details of the implementation.
Proxies allow remote event bus services to be called as if they were local.
Allow event bus services to be called from JavaScript (browser or Node.js).
This lets you dynamically install and deploy services from Maven at run-time.
Some of the more advanced or internal bits and pieces. You won't normally use these directly in your own projects. They're mainly stuff we use internally.
More magic that translates code into other languages (we mainly use this for translating examples)