本文介绍如何计算PutEvents事件大小,将多个事件添加到一个请求中以提高效率。

使用场景

您可以使用PutEvents操作添加自定义事件到事件总线EventBridge中。您可以使用PutEvents添加多个事件,通过预先计算事件大小,使所有事件总大小不超过256 KB,然后将这些事件添加到一个请求中以提高效率。

以下提供了计算事件大小的方式。

计算方式

CloudEvent 大小计算方式如下:

  • time:大小一般为36字节。
  • specversion:以字符串UTF-8编码形式的字节数来度量。
  • id:以字符串UTF-8编码形式的字节数来度量。
  • type:以字符串UTF-8编码形式的字节数来度量。
  • source:以字符串UTF-8编码形式的字节数来度量。
  • subject:以字符串UTF-8编码形式的字节数来度量。
  • dataschema:以字符串UTF-8编码形式的字节数来度量。
  • datacontenttype:以字符串UTF-8编码形式的字节数来度量。
  • data:按照byte[]的长度来度量。

示例代码

以下为计算单个CloudEvent 大小的Java示例代码:

int getSize(CloudEvent event) {
    int size = 0;
    if (event.getTime() != null) {
        size += 36;
    }
    size += event.getSpecversion().getBytes(StandardCharsets.UTF_8).length;
    size += event.getId().getBytes(StandardCharsets.UTF_8).length;
    size += event.getType().getBytes(StandardCharsets.UTF_8).length;
    size += event.getSource().toString().getBytes(StandardCharsets.UTF_8).length;
    size += event.getSubject().getBytes(StandardCharsets.UTF_8).length;
    size += event.getDataschema().toString().getBytes(StandardCharsets.UTF_8).length;
    size += event.getDatacontenttype().getBytes(StandardCharsets.UTF_8).length;
    size += event.getData().length;   
    return size;
}