Java SDK for CloudEvents
Go to file
Fabio José 33393ce26c Document the changes
Signed-off-by: Fabio José <fabiojose@gmail.com>
2019-09-18 21:39:48 -03:00
api Use of hight level unmarshaller 2019-09-18 21:37:36 -03:00
cdi Import the new v0.2 impl for CloudEvent 2019-09-03 15:33:48 -03:00
http/vertx Use of marshallers and unmarshallers for HTTP 2019-09-16 21:43:40 -03:00
kafka Tests for structured kafka consumer 2019-09-18 21:39:24 -03:00
.gitignore ☁️ CloudEvent Java API 2018-10-06 09:13:59 +02:00
.travis.yml Remove the oraclejdk8 due the ci error 2019-08-13 19:01:27 -03:00
CHANGELOG.md Document the changes 2019-09-18 21:39:48 -03:00
LICENSE Initial commit 2018-09-20 15:56:37 -04:00
README.md Fixing the examples 2019-09-10 22:23:19 -03:00
pom.xml Set version to 0.3.0 2019-09-03 21:04:43 -03:00

README.md

Java SDK for CloudEvents API

Build Status License Maven Central Javadocs

A Java API for the CloudEvents specification

Checkout the changelog

Motivation

The CloudEvents specification is a vendor-neutral specification for defining the format of event data that is being exchanged between different cloud systems. The specification basically defines an abstract envelope for any event data payload, without knowing specific implementation details of the actual underlying event. The current version of the spec is at 0.2 and it describes a simple event format, which was demonstrated at KubeCon 2018 using different Serverless platforms, such as Apache Openwhisk.

Java API

For Maven based projects, use the following to configure the CloudEvents Java SDK:

<dependency>
    <groupId>io.cloudevents</groupId>
    <artifactId>cloudevents-api</artifactId>
    <version>0.2.2</version>
</dependency>

Application developers can now create strongly-typed CloudEvents, such as:

import io.cloudevents.v02.CloudEventBuilder;
import io.cloudevents.v02.CloudEventImpl;
import io.cloudevents.extensions.ExtensionFormat;
import io.cloudevents.json.Json;
import io.cloudevents.extensions.DistributedTracingExtension;

// given
final String eventId = UUID.randomUUID().toString();
final URI src = URI.create("/trigger");
final String eventType = "My.Cloud.Event.Type";
final MyCustomEvent payload = ...

// add trace extension usin the in-memory format
final DistributedTracingExtension dt = new DistributedTracingExtension();
dt.setTraceparent("00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01");
dt.setTracestate("rojo=00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01");

final ExtensionFormat tracing = new DistributedTracingExtension.Format(dt);

// passing in the given attributes
final CloudEventImpl<MyCustomEvent> cloudEvent = new CloudEventBuilder<MyCustomEvent>()
    .withType(eventType)
    .withId(eventId)
    .withSource(src)
    .withData(payload)
    .withExtension(tracing)
    .build();

// marshalling as json
final String json = Json.encode(cloudEvent);

Possible Integrations

The API is kept simple, for allowing a wide range of possible integrations: