本文介紹如何計(jì)算PutEvents事件大小,將多個(gè)事件添加到一個(gè)請(qǐng)求中以提高效率。

使用場(chǎng)景

您可以使用PutEvents操作添加自定義事件到事件總線EventBridge中。您可以使用PutEvents添加多個(gè)事件,通過預(yù)先計(jì)算事件大小,使所有事件總大小不超過256 KB,然后將這些事件添加到一個(gè)請(qǐng)求中以提高效率。

以下提供了計(jì)算事件大小的方式。

計(jì)算方式

CloudEvent 大小計(jì)算方式如下:

  • time:大小一般為36字節(jié)。
  • specversion:以字符串UTF-8編碼形式的字節(jié)數(shù)來度量。
  • id:以字符串UTF-8編碼形式的字節(jié)數(shù)來度量。
  • type:以字符串UTF-8編碼形式的字節(jié)數(shù)來度量。
  • source:以字符串UTF-8編碼形式的字節(jié)數(shù)來度量。
  • subject:以字符串UTF-8編碼形式的字節(jié)數(shù)來度量。
  • dataschema:以字符串UTF-8編碼形式的字節(jié)數(shù)來度量。
  • datacontenttype:以字符串UTF-8編碼形式的字節(jié)數(shù)來度量。
  • data:按照byte[]的長度來度量。

示例代碼

以下為計(jì)算單個(gè)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;
}