Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions examples/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

<modules>
<module>kafka</module>
<module>vertx</module>
</modules>


Expand Down
19 changes: 19 additions & 0 deletions examples/vertx/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Vertx + CloudEvents sample

## Build

```shell
mvn package
```

## Start HTTP Server

```shell
mvn exec:java -Dexec.mainClass="io.cloudevents.examples.vertx.SampleHTTPServer" -Dexec.args="8080"
```

## Start HTTP Client

```shell
mvn exec:java -Dexec.mainClass="io.cloudevents.examples.vertx.SampleHTTPClient" -Dexec.args="http://localhost:8080"
```
27 changes: 27 additions & 0 deletions examples/vertx/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloudevents-examples</artifactId>
<groupId>io.cloudevents</groupId>
<version>2.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>cloudevents-vertx-example</artifactId>

<dependencies>
<dependency>
<groupId>io.cloudevents</groupId>
<artifactId>cloudevents-http-vertx</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.cloudevents</groupId>
<artifactId>cloudevents-json-jackson</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package io.cloudevents.examples.vertx;

import io.cloudevents.CloudEvent;
import io.cloudevents.core.builder.CloudEventBuilder;
import io.cloudevents.core.message.MessageReader;
import io.cloudevents.http.vertx.VertxMessageFactory;
import io.cloudevents.jackson.JsonFormat;
import io.vertx.core.Vertx;
import io.vertx.core.http.HttpClient;
import io.vertx.core.http.HttpClientRequest;
import java.net.URI;
import java.util.UUID;

public class SampleHTTPClient {

private static final int NUM_EVENTS = 20;

public static void main(String[] args) {

if (args.length != 1) {
System.err.println("Usage: SampleHTTPClient <event_sink>");
return;
}
final String eventSink = args[0];

final Vertx vertx = Vertx.vertx();
final HttpClient httpClient = vertx.createHttpClient();

// Create an event template to set basic CloudEvent attributes.
CloudEventBuilder eventTemplate = CloudEventBuilder.v1()
.withSource(URI.create("https://github.com/cloudevents/sdk-java/tree/master/examples/vertx"))
.withType("vertx.example");

// Send NUM_EVENTS events.
for (int i = 0; i < NUM_EVENTS; i++) {

// create HTTP request.
final HttpClientRequest request = httpClient.postAbs(eventSink)
.handler(response -> {

// We need to read the event from the HTTP response we get, so create a MessageReader.
VertxMessageFactory.createReader(response)
// Covert the MessageReader to a CloudEvent.
.map(MessageReader::toEvent)
// Print out the event.
.onSuccess(System.out::println)
.onFailure(System.err::println);

})
.exceptionHandler(System.err::println);

String id = UUID.randomUUID().toString();
String data = "Event number " + i;

// Create the event starting from the template
final CloudEvent event = eventTemplate.newBuilder()
.withId(id)
.withData("text/plain", data.getBytes())
.build();

// We need to write the event to the request, so create a MessageWriter.
if (i % 2 == 0) {
VertxMessageFactory.createWriter(request)
.writeBinary(event); // Use binary mode.
} else {
VertxMessageFactory.createWriter(request)
.writeStructured(event, new JsonFormat()); // Use structured mode.
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package io.cloudevents.examples.vertx;

import io.cloudevents.core.message.MessageReader;
import io.cloudevents.http.vertx.VertxMessageFactory;
import io.vertx.core.Vertx;

public class SampleHTTPServer {

public static void main(String[] args) {

if (args.length != 1) {
System.err.println("Usage: SampleHTTPServer <port>");
return;
}
final int port = Integer.parseInt(args[0]);

final Vertx vertx = Vertx.vertx();

// Create HTTP server.
vertx.createHttpServer()
.exceptionHandler(System.err::println)
.requestHandler(request -> {

// We need to read the event from the HTTP request we get, so create a MessageReader.
VertxMessageFactory.createReader(request)
// Covert the MessageReader to a CloudEvent.
.map(MessageReader::toEvent)
.onSuccess(event -> {
// Print out the event.
System.out.println(event);

// Write the same event as response in binary mode.
VertxMessageFactory.createWriter(request.response()).writeBinary(event);
})
.onFailure(System.err::println);


})
.listen(port, server -> {
if (server.succeeded()) {
System.out.println(
"Server listening on port: " + server.result().actualPort()
);
} else {
System.err.println(server.cause().getMessage());
}
});
}
}