This sample application has a /users
REST endpoint in which you can manage the different users.
The way to create users is through CloudEvents.
curl -v http://localhost:8080/users \
-H "Ce-Specversion: 1.0" \
-H "Ce-Type: User" \
-H "Ce-Source: io.cloudevents.examples/user" \
-H "Ce-Id: 536808d3-88be-4077-9d7a-a3f162705f78" \
-H "Content-Type: application/json" \
-H "Ce-Subject: SUBJ-0001" \
-d @examples/user.json
> POST /users HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.69.1
> Accept: */*
> Ce-Specversion: 1.0
> Ce-Type: User
> Ce-Source: io.cloudevents.examples/user
> Ce-Id: 536808d3-88be-4077-9d7a-a3f162705f78
> Content-Type: application/json
> Ce-Subject: SUBJ-0001
> Content-Length: 88
< HTTP/1.1 201 Created
< Content-Length: 0
< Location: http://localhost:8080/users
curl -v http://localhost:8080/users \
-H "Content-Type: application/cloudevents+json" \
-d @examples/user_structured.json
> POST /users HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.82.0
> Accept: */*
> Content-Type: application/cloudevents+json
> Content-Length: 290
>
< HTTP/1.1 201 Created
< Location: http://localhost:8081/users
< content-length: 0
<
In order to also show how to create and send CloudEvents, generated events will be periodically sent each 2 seconds through HTTP to the same endpoint using a REST client.
Check the following URL to view the existing users:
$ curl http://localhost:8080/users
{
"user1": {
"username": "user1",
"firstName": "firstName1",
"lastName": "lastName1",
"age": 1
},
"user2": {
"username": "user2",
"firstName": "firstName2",
"lastName": "lastName2",
"age": 2
}
}
This project uses Quarkus, the Supersonic Subatomic Java Framework.
If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ .
You can run your application in dev mode that enables live coding using:
mvn quarkus:dev
The application can be packaged using mvn package
.
It produces the cloudevents-restful-ws-quarkus-example-1.0-SNAPSHOT-runner.jar
file in the /target
directory.
Be aware that it’s not an über-jar as the dependencies are copied into the target/lib
directory.
The application is now runnable using java -jar target/cloudevents-restful-ws-quarkus-example-1.0-SNAPSHOT-runner.jar
.
You can create a native executable using: mvn package -Pnative
.
Or, if you don't have GraalVM installed, you can run the native executable build in a container using: mvn package -Pnative -Dquarkus.native.container-build=true
.
You can then execute your native executable with: ./target/cloudevents-restful-ws-quarkus-example-1.0-SNAPSHOT-runner
If you want to learn more about building native executables, please consult https://quarkus.io/guides/building-native-image.