La operación PutEvents acepta varios eventos personalizados en una sola solicitud, pero el tamaño total de todos los eventos no debe exceder 256 KB (262,144 bytes). Calcule el tamaño de cada CloudEvent antes de agruparlos para mantenerse dentro de este límite.
Cómo se calcula el tamaño del evento
Un CloudEvent consta de atributos de metadatos y una carga útil de datos. El tamaño total equivale a la suma de la longitud en bytes UTF-8 de cada atributo más la longitud en bytes sin procesar del campo data.
|
Atributo |
Cálculo del tamaño |
|
|
Generalmente 36 bytes |
|
|
Longitud en bytes con codificación UTF-8 |
|
|
Longitud en bytes con codificación UTF-8 |
|
|
Longitud en bytes con codificación UTF-8 |
|
|
Longitud en bytes con codificación UTF-8 |
|
|
Longitud en bytes con codificación UTF-8 |
|
|
Longitud en bytes con codificación UTF-8 |
|
|
Longitud en bytes con codificación UTF-8 |
|
|
Longitud de la matriz de bytes sin procesar ( |
Código de ejemplo
Calcule el tamaño de un solo 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;
}