Java SDK 您可使用开源CloudEvents Java SDK发布事件。 前提条件 1.您已下载IntelliJ IDEA等Java研发IDE。 2.在pom.xml中加入依赖。 plaintext io.cloudevents cloudeventscore ${cloudevents.version} io.cloudevents cloudeventshttpvertx ${cloudevents.version} io.cloudevents cloudeventsapi ${cloudevents.version} io.cloudevents cloudeventsjsonjackson ${cloudevents.version} 注:cloudevents.version使用最新里程碑版本2.0.0milestone1。 发布事件 结构化示例代码如下: java import java.net.URI; import java.util.UUID; import io.cloudevents.CloudEvent; import io.cloudevents.core.builder.CloudEventBuilder; 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; public class SampleStructuredHTTPClient { // 填写天翼云账号的aksk,确保该账号已授权事件总线的发布权限 private static String accessKeyId System.getenv("CTYUNACCESSKEYID"); private static String accessKeySecret System.getenv("CTYUNACCESSKEYSECRET"); // 在事件总线控制台获取服务接入地址 private static String endpoint " + System.getenv("CTYUNEVENTBRIDGESERVICEHOST") + "/api/v1/putEvents"; public static void main(String[] args) throws Exception { final Vertx vertx Vertx.vertx(); final HttpClient httpClient vertx.createHttpClient(); // 创建一个事件模板来设置基本的CloudEvent属性。 CloudEventBuilder eventTemplate CloudEventBuilder.v1() .withSource(URI.create(" .withType("vertx.example"); // 创建HTTP请求。 final HttpClientRequest request httpClient.postAbs(endpoint) .handler(response > { System.out.println(response.statusMessage()); }) .exceptionHandler(System.err::println); String id UUID.randomUUID() .toString(); String data "{"name":"Eventbridge","number":100}"; // 从模板中创建事件。 final CloudEvent event eventTemplate.newBuilder() .withId(id) .withData("application/json", data.getBytes()) // 确保总线已经创建 .withExtension("ctyuneventbusname", "mybus") .withSource(URI.create(" .withType("vertx.example") .withSubject("ceb:cos:huadong1:1234567:events") .build(); request.putHeader("contenttype", "application/cloudevents+json"); request.putHeader("authorization", "ceb" + ":" + accessKeyId + ":" + SignatureHelper.getSignature(SignatureHelper.getStringToSign(request), accessKeySecret) + ""); VertxMessageFactory.createWriter(request) .writeStructured(event, new JsonFormat()); } } 二进制示例代码如下: java import java.net.URI; import java.util.UUID; import io.cloudevents.CloudEvent; import io.cloudevents.core.builder.CloudEventBuilder; import io.cloudevents.http.vertx.VertxMessageFactory; import io.vertx.core.Vertx; import io.vertx.core.http.HttpClient; import io.vertx.core.http.HttpClientRequest; public class SampleBinaryHTTPClient{ // 填写天翼云账号的aksk,确保该账号已授权事件总线的发布权限 private static String accessKeyId System.getenv("CTYUNACCESSKEYID"); private static String accessKeySecret System.getenv("CTYUNACCESSKEYSECRET"); // 在事件总线控制台获取服务接入地址 private static String endpoint " + System.getenv("CTYUNEVENTBRIDGESERVICEHOST"); + "/api/v1/putEvents"; public static void main(String[] args) throws Exception { final Vertx vertx Vertx.vertx(); final HttpClient httpClient vertx.createHttpClient(); // 创建一个事件模板来设置基本的CloudEvent属性。 CloudEventBuilder eventTemplate CloudEventBuilder.v1() .withSource(URI.create(" .withType("vertx.example"); // 创建HTTP请求。 final HttpClientRequest request httpClient.postAbs(endpoint) .handler(response > { System.out.println(response.toString()); }) .exceptionHandler(e > { System.out.println(e); }); String id UUID.randomUUID() .toString(); String data "{"name":"Eventbridge","number":100}"; // 从模板中创建事件。 final CloudEvent event eventTemplate.newBuilder() .withId(id) .withData("application/json", data.getBytes()) // 确保总线已经创建 .withExtension("ctyuneventbusname", "mybus") .withSource(URI.create(" .withType("vertx.example") .withSubject("ceb:myapp:huadong1:1234567:events") .build(); request.putHeader("contenttype", "application/json"); request.putHeader("authorization", "ceb" + ":" + accessKeyId + ":" + SignatureHelper.getSignature(SignatureHelper.getStringToSign(request), accessKeySecret) + ""); VertxMessageFactory.createWriter(request) .writeBinary(event); } }