A operação PutEvents aceita múltiplos eventos personalizados em uma única solicitação, mas o tamanho total de todos os eventos na solicitação não deve exceder 256 KB (262.144 bytes). Calcule o tamanho de cada CloudEvent antes do agrupamento em lote para permanecer dentro desse limite.
Como o tamanho do evento é calculado
Um CloudEvent consiste em atributos de metadados e um payload de dados. O tamanho total corresponde à soma do comprimento em bytes UTF-8 de cada atributo mais o comprimento em bytes brutos do campo data.
|
Atributo |
Cálculo do tamanho |
|
|
Geralmente 36 bytes |
|
|
Comprimento em bytes codificados em UTF-8 |
|
|
Comprimento em bytes codificados em UTF-8 |
|
|
Comprimento em bytes codificados em UTF-8 |
|
|
Comprimento em bytes codificados em UTF-8 |
|
|
Comprimento em bytes codificados em UTF-8 |
|
|
Comprimento em bytes codificados em UTF-8 |
|
|
Comprimento em bytes codificados em UTF-8 |
|
|
Comprimento do array de bytes brutos ( |
Código de exemplo
Calcule o tamanho de um único CloudEvent (Java):
int getSize(CloudEvent event) {
int size = 0;
// time is generally a 36-byte timestamp when present
if (event.getTime() != null) {
size += 36;
}
// Metadata attributes: measure UTF-8 encoded byte length
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;
// Data payload: measure raw byte array length
size += event.getData().length;
return size;
}