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

Web

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

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
CeylonManualAPI

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

JDBC client

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
CeylonManualAPI

SQL common

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
CeylonManualAPI

Redis client

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI

MySQL / PostgreSQL client Technical Preview

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI

Integration

Mail Client

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

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI

STOMP Client & Server

Vert.x provides an implementation of the STOMP protocol.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI

JCA Adaptor

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

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

Camel Bridge

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

JavaManualAPI

AMQP Bridge Technical Preview

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

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI

RabbitMQ Client Technical Preview

A client to interact with RabbitMQ.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI

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

JDBC auth

Auth implementation backed by JDBC

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
CeylonManualAPI

JWT auth

Auth implementation using JSON web tokens (JWT)

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
CeylonManualAPI

Shiro auth

Auth implementation using Apache Shiro

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
CeylonManualAPI

MongoDB auth

Auth implementation using MongoDB

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI

OAuth 2

Auth implementation for OAuth2

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI
CeylonManualAPI

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 Discovery Service Technical Preview

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

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI

Vert.x Circuit Breaker Technical Preview

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

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI

Vert.x Discovery Service - Kubernetes

This component imports Kubernetes services into the Vert.x Discovery Service.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI

Vert.x Discovery Service - Docker Links

This component analyzes Docker links to import services into the Vert.x Discovery Service.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI

Vert.x Discovery Service - Consul

This component imports services from Consul into the Vert.x Discovery Service.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI

Vert.x Discovery Service - Redis Backend

This component provides an alternative discovery backend using Redis.

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI

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

Metrics using Hawkular

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

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI

Shell

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

JavaManualAPI
JavaScriptManualAPI
GroovyManualAPI
RubyManualAPI

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

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.

JGroups Technical Preview

Cluster manager implementation that uses JGroups.

Apache Ignite Technical Preview

Cluster manager implementation that uses Apache Ignite.


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 Factories

How to package and deploy Vert.x independent services.

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).

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.