L'opération PutEvents accepte plusieurs événements personnalisés dans une seule requête, mais la taille totale de tous les événements inclus ne doit pas dépasser 256 Ko (262 144 octets). Calculez la taille de chaque CloudEvent avant le regroupement par lots afin de respecter cette limite.
Méthode de calcul de la taille des événements
Un CloudEvent se compose d'attributs de métadonnées et d'une charge utile. La taille totale correspond à la somme de la longueur en octets UTF-8 de chaque attribut et de la longueur brute en octets du champ data.
| Attribut | Calcul de la taille |
|---|---|
time |
Généralement 36 octets |
specversion |
Longueur en octets encodée en UTF-8 |
id |
Longueur en octets encodée en UTF-8 |
type |
Longueur en octets encodée en UTF-8 |
source |
Longueur en octets encodée en UTF-8 |
subject |
Longueur en octets encodée en UTF-8 |
dataschema |
Longueur en octets encodée en UTF-8 |
datacontenttype |
Longueur en octets encodée en UTF-8 |
data |
Longueur du tableau d'octets brut (byte[]) |
Exemple de code
Calculez la taille d'un seul 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;
}