本文介紹如何計算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;
}