# 🇬🇧 Use Vert.x with OpenFaaS
That night, I could not sleep, and instead of going round in circles (this is a 🇫🇷 expression, I'm not even sure that exists in 🇬🇧), so, I decided to continue my experiments with OpenFaaS and create a template to use Vert.x (opens new window) with OpenFaaS. Vert.x (opens new window) is my favorite Java Web framework. Vert.x (opens new window) reminds me Node.js a lot (and I'm more a JavaScript guy than a Java guy). You can get this new template here: https://gitlab.com/openfaas-experiments/java-8-vert-x-template (opens new window)
# Create a new function using the Vert.x template
First create a directory for your project:
mkdir vert-x-project
cd vert-x-project
Then, fetch the Java 8 Vert.x (opens new window) template:
faas template pull https://gitlab.com/openfaas-experiments/java-8-vert-x-template
And finally, create the function:
faas new demo-vert-x --lang java8-vert-x
If you're using the same setup as described in the previous blog post (opens new window), you have to change the demo-vert-x.yml
file like that:
provider:
name: faas
gateway: http://openfaas.test:8080
functions:
demo-vert-x:
lang: java8-vert-x
handler: ./demo-vert-x
image: registry.test:5000/hello:latest
Or like that if you use the public Docker hub
provider:
name: faas
gateway: http://openfaas.test:8080
functions:
demo-vert-x:
lang: java8-vert-x
handler: ./demo-vert-x
image: k33g/demo-vert-x:latest
Remark:
k33g
is my handle on Docker Hub
# Your new Vert.x function
Your new function should look like this:
package com.openfaas.function;
import io.vertx.ext.web.RoutingContext;
import io.vertx.ext.web.handler.BodyHandler;
import io.vertx.core.json.JsonObject;
public class Handler implements BodyHandler {
@Override
public void handle(RoutingContext routingContext) {
routingContext.response()
.putHeader("content-type", "application/json;charset=UTF-8")
.end(
new JsonObject()
.put("message", "👋 Hello 🌍 World")
.encodePrettily()
);
}
@Override
public BodyHandler setBodyLimit(long bodyLimit) {
return null;
}
@Override
public BodyHandler setUploadsDirectory(String uploadsDirectory) {
return null;
}
@Override
public BodyHandler setMergeFormAttributes(boolean mergeFormAttributes) {
return null;
}
@Override
public BodyHandler setDeleteUploadedFilesOnEnd(boolean deleteUploadedFilesOnEnd) {
return null;
}
}
# Build an deploy the function
It's easy:
# Build and push to the Docker Hub
faas-cli build -f demo-vert-x.yml
faas-cli push -f demo-vert-x.yml
# Deploy to OpenFaaS
# - Set the url of the OpenFaaS server
# - Authenticate
# - Deploy
export OPENFAAS_URL=http://openfaas.test:8080
echo -n 21d0b92900a5cd99296cd4f8d96b260ec687fd6464a1eb522b6e699ee7896eed | faas-cli login --username=admin --password-stdin
faas-cli deploy -f demo-vert-x.yml
And now, you can use your new function:
echo | faas-cli invoke demo-vert-x
And you should get:
{
"message" : "👋 Hello 🌍 World"
}
Or directilt in the web administration console of OpenFaaS
That's all for this 🌧 day 😃
Have a good Sunday 👋
Last Articles
- 🇫🇷 Type Result en Kotlin | 2020-10-31 | Kotlin
- 🇫🇷 Type Result en Kotlin | 2020-10-31 | Kotlin
- 🇬🇧 Every GitLab Page deserves a real CI/CD | 2020-07-23 | GitLab CI
- 🇫🇷 Lit-Element, commencer doucement | 2020-07-20 | WebComponent
- 🇬🇧 Build quickly and host easily your Docker images with GitLab and GitLab CI | 2020-06-02 | GitLab CI
- 🇬🇧 Deploy quickly on Clever Cloud with GitLab CI | 2020-05-31 | GitLab CI
- 🇫🇷 Borg Collective, mes jouets pour apprendre Knative | 2020-05-30 | Knative
- 🇬🇧 Borg Collective, Toys to learn Knative | 2020-05-30 | Knative
- 🇫🇷 M5Stack, une petit device IOT bien sympathique, programmable en Python | 2020-05-09 | IOT
- 🇫🇷 Knative, l'outil qui rend Kubernetes sympathique | 2020-05-02 | kubernetes