Skip to main content

Get Started

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 and let that guide you through.

You can also start by following the Introduction to Vert.x blog post series, a step by step introduction to Vert.x and its features.

If you are interested by talks about Vert.x check the learning materials page, listing Vert.x presentations made in conferences.

Explore

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.


Core

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

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
CeylonManualAPI
KotlinManualAPI
ScalaManualAPI

Web

Vert.x-Web is a tool-kit for writing sophisticated modern web applications and HTTP microservices.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
CeylonManualAPI
KotlinManualAPI
ScalaManualAPI

Web Client

Vert.x Web Client is an easy to use advanced HTTP client.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManualAPI

Data access

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.

MongoDB client

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManualAPI

JDBC client

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
CeylonManualAPI
KotlinManualAPI
ScalaManualAPI

SQL common

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
CeylonManualAPI
KotlinManualAPI
ScalaManualAPI

Redis client

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManualAPI

MySQL / PostgreSQL client

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManualAPI

Integration

Mail Client

Vert.x provides a simple SMTP mail client so you can send emails from your applications.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManualAPI

STOMP Client & Server

Vert.x provides an implementation of the STOMP protocol.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManualAPI

JCA Adaptor

Vert.x provides a Java Connector Architecture (JCA) adaptor which allows it to interoperate with any JavaEE application server.

RabbitMQ Client

A client to interact with RabbitMQ.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManual

Kafka Client

A client to interact with Apache Kafka.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManual

Consul Client Technical Preview

A client to interact with Consul.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI

AMQP Bridge

A bridge for interacting with an AMQP 1.0 broker or router.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManualAPI

Event Bus Bridge

Vert.x offers various bridges to extend the Event Bus beyond the JVM

TCP Eventbus Bridge

An eventbus bridge that lets you interact with Vert.x from any application thanks to a TCP socket.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManualAPI

Camel Bridge

An eventbus bridge that lets you interact with Apache Camel endpoints and routes

JavaManualAPI

Authentication and Authorisation

Vert.x provides simple APIs for auth in your applications. We also provide a few out of the box implementations.

Auth common

The Common Auth APIs

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
CeylonManualAPI
KotlinManualAPI
ScalaManualAPI

JDBC auth

Auth implementation backed by JDBC

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
CeylonManualAPI
KotlinManualAPI
ScalaManualAPI

JWT auth

Auth implementation using JSON web tokens (JWT)

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
CeylonManualAPI
KotlinManualAPI
ScalaManualAPI

Shiro auth

Auth implementation using Apache Shiro

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
CeylonManualAPI
KotlinManualAPI
ScalaManualAPI

MongoDB auth

Auth implementation using MongoDB

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManualAPI

OAuth 2

Auth implementation for OAuth2

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
CeylonManualAPI
KotlinManualAPI
ScalaManualAPI

.htdigest Auth

.htdigest file to query user information

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManualAPI

Reactive

Vert.x provides a couple of components to make your applications more reactive.

Vert.x Rx

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.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI

Reactive streams

Vert.x supports reactive streams so your applications can interoperate with other reactive systems such as Akka or Project Reactor.

JavaManualAPI

Vert.x Sync

Vertx-sync allows you to deploy verticles that run using fibers. Fibers are very lightweight threads that can be blocked without blocking a kernel thread. This enables you to write your verticle code in a familiar synchronous style.

JavaManualAPI

Microservices

Vert.x offers various component to build microservice-based applications.

Vert.x Service Discovery

This component lets you publish, lookup and bind to any type of services.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManualAPI

Vert.x Circuit Breaker

This component provides an implementation of the circuit breaker pattern for Vert.x

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManualAPI

Vert.x Config

This component provides an extensible way to configure Vert.x applications.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManualAPI

MQTT Server Technical Preview

Vert.x MQTT Server is able to handle connections, communication and messages exchange with remote MQTT clients. Its API provides a bunch of events related to protocol messages received by clients and exposes allow to send messages to them.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManualAPI

Devops

Vert.x offers various component to keep your Vert.x application on track when running in production

Metrics using Dropwizard

This component captures metrics from Vert.x core components and exposes them using Dropwizard.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManualAPI

Metrics using Hawkular

This component captures metrics from Vert.x core components and send them to Hawkular.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManualAPI

Vert.x Health Check

This component provides a simple way to expose health checks.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI

Shell

This component lets you interact with your Vert.x application using a CLI interface.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI
ScalaManualAPI

Docker

These docker images, available from the DockerHub, let you run Vert.x applications in Docker containers.

Stack Manager

The stack manager (provided in the Vert.x distros) lets you add and remove artifacts from your stack.


Testing

Vert.x-Unit is an unit testing tool-kit especially design to work well with asynchronous code.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
KotlinManualAPI

Clustering

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.

Hazelcast

Cluster manager implementation that uses Hazelcast. This is the default.

Infinispan Technical Preview

Cluster manager implementation that uses Infinispan.

Apache Ignite

Cluster manager implementation that uses Apache Ignite.

Apache Zookeeper Technical Preview

Cluster manager implementation that uses Apache Zookeeper.


Services

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.

Service Proxies

Proxies allow remote event bus services to be called as if they were local.

SockJS Service Proxies

Allow event bus services to be called from JavaScript (browser or Node.js).

gRPC

Implement gRPC Clients and Servers for Vert.x.

Service Factories

How to package and deploy Vert.x independent services.

Maven Service Factory

This lets you dynamically install and deploy services from Maven at run-time.

HTTP Service Factory

This lets you dynamically install and deploy services from an HTTP server (for example Bintray) at run-time.


Cloud

Vert.x OpenShift 2 Cartridge

This cartridge allows you to easily run clusterable Vert.x applications on the Red Hat OpenShift cloud platform.

Vert.x OpenShift 2 - DIY Cartridge

This cartridge allows you to get started running simple applications quickly on the Red Hat OpenShift cloud platform.

Vert.x OpenShift 3 S2I

A source to image support for Openshift 3.


Advanced

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.

Codegen

This is the magic that translates Java APIs into other languages.

Docgen

Creates asciidoc and API documentation from in-source docs.

Codetrans

More magic that translates code into other languages (we mainly use this for translating examples)

Bridge Common

This project contains the data object used by all eventbus bridges.

Distro

This project builds the various Vert.x distributions.

Web-site

This is the repository that creates this web-site.