PutEvents işlemi, tek bir istekte birden fazla özel olay kabul eder; ancak istekteki tüm olayların toplam boyutu 256 KB'ı (262.144 bayt) aşmamalıdır. Bu sınır içinde kalmak için olayları toplu iş olarak göndermeden önce her bir CloudEvent'in boyutunu hesaplayın.
Olay boyutunun hesaplanması
Bir CloudEvent meta veri niteliklerinden ve bir veri yükünden oluşur. Toplam boyut; her bir nitelikin UTF-8 bayt uzunluğu toplamına, data alanının ham bayt uzunluğunun eklenmesiyle bulunur.
| Nitelik | Boyut hesaplama |
|---|---|
time |
Genellikle 36 bayt |
specversion |
UTF-8 kodlanmış bayt uzunluğu |
id |
UTF-8 kodlanmış bayt uzunluğu |
type |
UTF-8 kodlanmış bayt uzunluğu |
source |
UTF-8 kodlanmış bayt uzunluğu |
subject |
UTF-8 kodlanmış bayt uzunluğu |
dataschema |
UTF-8 kodlanmış bayt uzunluğu |
datacontenttype |
UTF-8 kodlanmış bayt uzunluğu |
data |
Ham bayt dizisi uzunluğu (byte[]) |
Örnek kod
Tek bir CloudEvent'in boyutunu hesaplayan Java kodu:
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;
}