Tüm Ürünler
Search
Belge Merkezi

DataWorks:Ek: DataHub mesaj formatları

Son Güncelleme:Oct 05, 2026

Bu ek bölümde farklı DataHub veri türleri için desteklenen işlemler, parçalama stratejileri, veri biçimleri ve mesaj örnekleri açıklanmaktadır.

Farklı veri türleri için desteklenen işlemler

Konu (topic), DataHub'da veri aboneliği ve yayınlamanın temel birimidir ve akış verilerinin bir koleksiyonunu temsil eder. DataHub iki veri türünü destekler: TUPLE ve BLOB.


DataHub türü


DML mesajlarını yaz


Yukarı yönlü kalp atışı mesajlarını yaz


DDL mesajlarını yaz


Kaynaktan konuya eşleme


Tür


TUPLE


Desteklenir


Desteklenmez


Desteklenmez


Bir tablo bir konuya


DataHub tarafından desteklenen türler


BLOB


Desteklenir


Desteklenir


Desteklenir


Bir veritabanı (birden çok tablo) bir konuya


BLOB ikili veriler

  • TUPLE konuları, oluşturulduktan sonra değiştiremeyeceğiniz sabit bir şemaya sahiptir. Kaynak tablo şemasının kararlı olduğu ve ADD COLUMN veya DROP COLUMN gibi DDL işlemleri içermediği senaryolar için uygundur. TUPLE konuları, DDL mesajlarının veya kaynaklardan aşağı yönlü tüketicilere gelen kalp atışı mesajlarının iletilmesini desteklemez. Bu birebir eşleme, birçok kaynak tablonuz varsa aşağı yönlü tüketim açısından kullanışsız olabilir; çünkü her biri için karşılık gelen bir konu oluşturmanız gerekir.

  • BLOB konularında önceden tanımlanmış bir şema bulunmaz ve yalnızca ham ikili veriler depolanır; bu da onları daha esnek hale getirir. Kaynaklardan aşağı yönlü tüketicilere DDL mesajlarının ve kalp atışı mesajlarının iletilmesini desteklerler. Tek bir veritabanındaki birden fazla tabloyu tek bir konuyla eşlerler. Bu sayede tüm kaynak tablolar için tek bir konu kullanabilir ve aşağı yönlü tüketimi basitleştirebilirsiniz. Bu tür, DataHub'ın tam veritabanı geçişi için ara mesaj kuyruğu olarak görev yaptığı senaryolar için idealdir.

Farklı veri türleri için parçalama stratejileri

Parça (shard), bir DataHub konusu içindeki veri iletimi için eşzamanlı bir kanaldır. Tek bir parçanın yazma aktarım hızı sınırlı olsa da bunu artırmak için birden çok parça kullanabilirsiniz. DataHub sıralı tüketimi yalnızca tek bir parça içinde garanti eder; birden çok parça arasında garanti etmez. Birden çok parça ile yazma performansını artırırken mesaj sırasını korumak ve veri eğrilmesini önlemek amacıyla DataHub, TUPLE ve BLOB veri türleri için aşağıdaki parçalama stratejilerini sunar.


Senaryo


TUPLE


BLOB


Birincil anahtarla birlikte (özel birincil anahtarlar dahil)


Birincil anahtara göre parçala


Birincil anahtara göre parçala


Sıralama garantisi


Aynı birincil anahtara sahip mesajlar sırayla işlenir


Aynı birincil anahtara sahip mesajlar sırayla işlenir


Birincil anahtar olmadan


Rastgele parçalama


Tablo adına göre parçala


Sıralama garantisi


Sıralama garanti edilmez


Aynı tablodan gelen mesajlar sırayla işlenir

Veri biçimleri

  • TUPLE

    TUPLE biçimi, DataHub tarafından yerel olarak desteklenen veri türlerini kullanır. Bir konu oluşturduğunuzda Data Integration birkaç meta veri sütunu ekler. TUPLE biçiminin şeması hem meta veri sütunlarını hem de iş verisi sütunlarını içerir. Alt çizgi ile başlayan alanlar, örneğin _sequence_id_ ve _operation_type_, meta veri sütunlarıdır. Kalan alanlar iş verisi sütunlarıdır. Meta veri sütunları şunları içerir:_sequence_id_, _excute_time_, _source_table_, _before_image_ ve _after_image_.


    Parametre


    Açıklama


    _sequence_id_


    Rakamlardan oluşan STRING türünde benzersiz bir mesaj kimliğidir. Aynı güncelleme için yapılan UPDATE_BEFOR ve UPDATE_AFTER işlemleri aynı sıra kimliğini paylaşır.


    _excute_time_


    Verinin oluşturulduğu zaman.


    _source_table_


    Kaynak tablonun adı.


    _before_image_


    Önceki görüntü. UPDATE_BEFOR veya DELETE işlemi için değer Y, UPDATE_AFTER veya INSERT işlemi için ise N olur.


    _after_image_


    Sonraki görüntü. UPDATE_BEFOR veya DELETE işlemi için değer N, UPDATE_AFTER veya INSERT işlemi için ise Y olur.

    Örnek: Aşağıdaki tabloda INSERT, UPDATE ve DELETE deyimlerinin çalıştırılmasından sonra DataHub'a senkronize edilen veriler gösterilmektedir.


    _sequence_id_


    _operation_type_


    _excute_time_


    _before_image_


    _after_image_


    1649991610688000000


    I


    1649991726000


    N


    Y


    1649991610688000001


    U


    1649991756000


    Y


    N


    1649991610688000001


    U


    1649991756000


    N


    Y


    1649991610688000002


    D


    1649991774000


    Y


    N

  • BLOB

    BLOB mesajı, bir JSON dizesi dönüştürülerek oluşturulan ikili veridir. İlgili JSON biçimi aşağıdaki gibidir:

    {
        "schema": { // Metadata about the change, specifying only column names and types.
            "dataColumn": [ // Information about the changed data columns, used to update records in the destination table.
                {
                    "name": "id",
                    "type": "LONG"
                },
                {
                    "name": "name",
                    "type": "STRING"
                },
                {
                    "name": "binData",
                    "type": "BYTES"
                },
                {
                    "name": "ts",
                    "type": "DATE"
                }
            ],
            "primaryKey": [
                "pkName1",
                "pkName2"
            ],
            "source": {
                "dbType": "mysql",
                "dbVersion": "1.0.0",
                "dbName": "myDatabase",
                "schemaName": "mySchema",
                "tableName": "tableName"
            }
        },
        "payload": {
            "before": {
                "dataColumn":{
                    "id": 111,
                    "name":"scooter",
                    "binData": "[base64 string]",
                    "ts": 1590315269000
                }
            },
            "after": {
                "dataColumn":{
                    "id": 222,
                    "name":"donald",
                    "binData": "[base64 string]",
                    "ts": 1590315269000
                }
            },
              "sequenceId":XXX, // A string used for data ordering when merging full and incremental data.
            "op": "INSERT/UPDATE/DELETE/TRANSACTION_BEGIN/TRANSACTION_END/CREATE/ALTER/ERASE/QUERY/TRUNCATE/RENAME/CINDEX/DINDEX/GTID/XACOMMIT/XAROLLBACK/MHEARTBEAT...", // Case-sensitive.
            "timestamp": {
                "eventTime": 1, // Required. The time of the record change. A 13-digit timestamp with millisecond precision.
                "systemTime": 2, // Optional. Exists for some data sources like Oracle CDC.
                "checkpointTime": 3 // Optional. Included for some data sources like OceanBase.
            },
            "ddl": {
                "text": "ADD COLUMN ...",
                "ddlMeta": "[SQLStatement serialized binary, expressed in base64 string]"
            }
        },
        "version":"1.0.0"
    }
    • BLOB alanları

      Önemli

      Mesajdaki tüm alanların veri türleri StreamX tarafından tanımlanır ve şunları içerir: BOOLEAN, DOUBLE, DATE, BYTES, LONG ve STRING.

      BOOLEAN: The value is `true` or `false`.
      DATE: The value is a 13-digit integer representing a timestamp with millisecond precision.
      BYTES: Stores byte arrays as a Base64-encoded string.
      Use the `java.util.Base64` APIs for Base64 encoding and decoding:
      String text = "text123";
      // Encode
      Base64.getEncoder().encodeToString(text.getBytes("UTF-8"))
      // Decode
      Base64.getDecoder().decode(encodedText)
                                  

      Üst düzey öğe

      İkinci düzey öğe

      Açıklama

      schema

      dataColumn

      Veri sütunlarının tür bilgilerini içeren bir JSONArray dizisidir.dataColumn, yukarı yönlü bir veri değişikliği kaydındaki tüm sütunları ve türlerini kaydeder. Bir değişiklik işlemi, veri değişikliği (ekleme, silme veya güncelleme gibi) veya tablo yapısı değişikliği olabilir.

      • name: Sütun adı.

      • type: Sütun veri türü.

      primaryKey

      Birincil anahtar sütun adlarını temsil eden bir dize listesidir.

      pk: Birincil anahtar adı.

      source

      Kaynak veritabanı veya tablo hakkında bilgi içeren bir nesnedir.

      • dbType: Veritabanı türünü temsil eden bir dizedir.

      • dbVersion: Veritabanı sürümünü temsil eden bir dizedir.

      • dbName: Veritabanı adını temsil eden bir dizedir.

      • schemaName: Şema adını temsil eden bir dizedir; PostgreSQL ve SQL Server gibi veritabanları için gereklidir.

      • tableName: Tablo adını temsil eden bir dizedir.

      payload

      before

      Verinin önceki görüntüsünü içeren bir JSONObject'tir. MySQL kaynağında bir UPDATE işlemi için before alanı, güncellemeden önceki kayıt içeriğini saklar.

      • Bu alan, kaynaktan bir güncelleme veya silme mesajı okunduğunda doldurulur.

      • dataColumn: Veri bilgilerini temsil eden JSONObject türünde bir parametredir. Biçimi sütun adı: sütun değeri şeklindedir. Sütun adı bir dizedir ve sütun değeri veri türüne bağlıdır: BYTES türündeki değerler Base64 dizeleri olarak, DATE türündeki değerler long türünde 13 basamaklı zaman damgaları olarak, diğer türlerin değerleri ise yerel türleriyle temsil edilir.

      after

      Verinin sonraki görüntüsüdür. Biçimi before alanıyla aynıdır.

      Not

      Bu alan, UPDATE ve INSERT işlemleri için gereklidir.

      op

      İşlem türü. Geçerli değerler:

      • INSERT: Veri ekleme.

      • UPDATE_BEFOR: Güncelleme işlemi için önceki görüntü.

      • UPDATE_AFTER: Güncelleme işlemi için sonraki görüntü.

      • DELETE: Veri silme.

      • TRANSACTION_BEGIN: Bir veritabanı işleminin başlangıcı.

      • TRANSACTION_END: Bir veritabanı işleminin sonu.

      • CREATE: Tablo oluşturma.

      • ALTER: Tablo değiştirme.

      • QUERY: Veritabanı değişikliği için orijinal SQL.

      • TRUNCATE: Tabloyu boşaltma.

      • RENAME: Tabloyu yeniden adlandırma.

      • CINDEX: İndeks oluşturma.

      • DINDEX: İndeks silme.

      • MHEARTBEAT: Kaynaktan yeni veri gelmese bile senkronizasyon görevinin normal çalıştığını belirten bir kalp atışı mesajı.

      timestamp

      Bu veri kaydıyla ilgili zaman damgalarını içeren bir JSONObject'tir.

      • eventTime: Kaynak veritabanında değişikliğin gerçekleştiği zamanı temsil eden Long değeridir. Milisaniye hassasiyetine sahip 13 basamaklı bir zaman damgasıdır.

      • systemTime: Senkronizasyon görevinin bu değişiklik mesajını işlediği zamanı temsil eden Long değeridir. Milisaniye hassasiyetine sahip 13 basamaklı bir zaman damgasıdır.

      • checkpointTime: Senkronizasyon ofsetini sıfırlamak için kullanılan zamanı temsil eden Long değeridir. Bu değer genellikle eventTime ile aynıdır. Milisaniye hassasiyetine sahip 13 basamaklı bir zaman damgasıdır.

      ddl

      Bu alan yalnızca tablo yapısını değiştiren DDL işlemleri için doldurulur. Veri ekleme, silme ve değiştirme gibi DML işlemleri için ddl alanı null değerini alır.

      • text: Veritabanı DDL deyimi metnini içeren bir String'dir.

      • ddlMeta: FastSQL ile DDL deyimi ayrıştırılarak oluşturulan SQLStatement nesnesinin ikili gösterimini içeren ve Base64 ile kodlanmış bir String'dir.

        DDL desteğini etkinleştirirseniz sistem seri hale getirilmiş SQLStatement nesnesini iletir. Aşağı yönlü bileşen daha sonra bu nesneyi seri durumdan çıkararak hedef veri kaynağı için DDL deyimini yeniden oluşturabilir ve değişikliği uygulayabilir.

      version

      Yok

      Biçimin sürüm numarası.

    • BLOB serileştirme

      Bu JSON biçiminde her mesaj tek bir JSONObject'e karşılık gelir. İç içe geçmiş nesneler ve diziler içerebilen bu JSONObject'in yapısı, mesaj biçimini tanımlar.

      Mesajı serileştirmek için JSONObject'i bir dizeye dönüştürün (örneğin fastjson'dan toJSONString yöntemini kullanarak) ve ardından dizeyi String.getBytes(Charsets.UTF_8) yöntemini kullanarak bir bayt dizisine dönüştürün.

Örnek JSON mesajları

  • Ekleme:

    {
        "schema": {
            "dataColumn": [
                {
                    "name": "id",
                    "type": "LONG"
                },
                {
                    "name": "name",
                    "type": "STRING"
                },
                {
                    "name": "comment",
                    "type": "STRING"
                }
            ],
            "source": {
                "dbName": "example_db",
                "dbType": "MySQL",
                "tableName": "example_table_pk"
            },
            "primaryKey": [
                "id",
                "name"
            ]
        },
        "payload": {
            "op": "INSERT",
            "after": {
                "dataColumn": {
                    "name": "joe",
                    "comment": "comment",
                    "id": 1
                }
            },
            "sequenceId": "1605339516000000004",
            "timestamp": {
                "eventTime": 1605339932000,
                "systemTime": 1605339932736,
                "checkpointTime": 1605339932000
            }
        },
        "version": "0.0.1"
    }
  • Güncelleme öncesi:

    {
        "schema": {
            "dataColumn": [
                {
                    "name": "id",
                    "type": "LONG"
                },
                {
                    "name": "name",
                    "type": "STRING"
                },
                {
                    "name": "comment",
                    "type": "STRING"
                }
            ],
            "source": {
                "dbName": "example_db",
                "dbType": "MySQL",
                "tableName": "example_table_pk"
            },
            "primaryKey": [
                "id",
                "name"
            ]
        },
        "payload": {
            "op": "UPDATE_BEFOR",
            "before": {
                "dataColumn": {
                    "name": "joe",
                    "comment": "comment",
                    "id": 1
                }
            },
            "sequenceId": "1605339516000000005",
            "timestamp": {
                "eventTime": 1605339934000,
                "systemTime": 1605339934951,
                "checkpointTime": 1605339934000
            }
        },
        "version": "0.0.1"
    }
  • Güncelleme sonrası:

    {
        "schema": {
            "dataColumn": [
                {
                    "name": "id",
                    "type": "LONG"
                },
                {
                    "name": "name",
                    "type": "STRING"
                },
                {
                    "name": "comment",
                    "type": "STRING"
                }
            ],
            "source": {
                "dbName": "example_db",
                "dbType": "MySQL",
                "tableName": "example_table_pk"
            },
            "primaryKey": [
                "id",
                "name"
            ]
        },
        "payload": {
            "op": "UPDATE_AFTER",
            "after": {
                "dataColumn": {
                    "name": "joe",
                    "comment": "com1",
                    "id": 1
                }
            },
            "sequenceId": "1605339516000000005",
            "timestamp": {
                "eventTime": 1605339934000,
                "systemTime": 1605339934951,
                "checkpointTime": 1605339934000
            }
        },
        "version": "0.0.1"
    }
  • Silme:

    {
        "schema": {
            "dataColumn": [
                {
                    "name": "id",
                    "type": "LONG"
                },
                {
                    "name": "name",
                    "type": "STRING"
                },
                {
                    "name": "comment",
                    "type": "STRING"
                }
            ],
            "source": {
                "dbName": "example_db",
                "dbType": "MySQL",
                "tableName": "example_table_pk"
            },
            "primaryKey": [
                "id",
                "name"
            ]
        },
        "payload": {
            "op": "DELETE",
            "before": {
                "dataColumn": {
                    "name": "joe",
                    "comment": "com1",
                    "id": 1
                }
            },
            "sequenceId": "1605339516000000006",
            "timestamp": {
                "eventTime": 1605339937000,
                "systemTime": 1605339937671,
                "checkpointTime": 1605339937000
            }
        },
        "version": "0.0.1"
    }
  • Kalp atışı:

    {
        "schema": {},
        "payload": {
            "op": "MHEARTBEAT",
            "timestamp": {
                "eventTime": 1605339953629,
                "checkpointTime": 1605339953629
            }
        },
        "version": "0.0.1"
    }
  • DDL:

    {
        "schema": {
            "source": {
                "dbName": "example_db",
                "dbType": "MySQL",
                "tableName": "example_table_nopk"
            }
        },
        "payload": {
            "op": "ALTER",
            "sequenceId": "1605339516000000035",
            "ddl": {
                "text": "alter table example_table_nopk add column holo text",
                "ddlMeta": "rO0ABXNyACljb20uYWxpYmFiYS5kaS5wbHVnaW4uY2VudGVyLm1ldGEuRERMTWV0YQLb5Cx/YWXtAgACTAAHZGRsVGV4dHQAEkxqYXZhL2xhbmcvU3RyaW5nO0wACXN0YXRlbWVudHQAKkxjb20vYWxpYmFiYS9mYXN0c3FsL3NxbC9hc3QvU1FMU3RhdGVtZW50O3hwdAAtYWx0ZXIgdGFibGUgdF9zaGl5dV9ub3BrIGFkZCBjb2x1bW4gaG9sbyB0ZXh0c3IAPGNvbS5hbGliYWJhLmZhc3RzcWwuc3FsLmFzdC5zdGF0ZW1lbnQuU1FMQWx0ZXJUYWJsZVN0YXRlbWVudBQPP3vMUl2cAgAPSQAHYnVja2V0c1oABmlnbm9yZVoAF2ludmFsaWRhdGVHbG9iYWxJbmRleGVzWgAPbWVyZ2VTbWFsbEZpbGVzWgAHb2ZmbGluZVoABm9ubGluZVoADnJlbW92ZVBhdGl0aW5nWgATdXBkYXRlR2xvYmFsSW5kZXhlc1oAD3VwZ3JhZGVQYXRpdGluZ0wAC2NsdXN0ZXJlZEJ5dAAQTGphdmEvdXRpbC9MaXN0O0wABWl0ZW1zcQB+AAZMAAlwYXJ0aXRpb250ACxMY29tL2FsaWJhYmEvZmFzdHNxbC9zcWwvYXN0L1NRTFBhcnRpdGlvbkJ5O0wACHNvcnRlZEJ5cQB+AAZMAAx0YWJsZU9wdGlvbnNxAH4ABkwAC3RhYmxlU291cmNldAA6TGNvbS9hbGliYWJhL2Zhc3RzcWwvc3FsL2FzdC9zdGF0ZW1lbnQvU1FMRXhwclRhYmxlU291cmNlO3hyACxjb20uYWxpYmFiYS5mYXN0c3FsLnNxbC5hc3QuU1FMU3RhdGVtZW50SW1wbEOxUUDVCJMGAgADWgAJYWZ0ZXJTZW1pTAAGZGJUeXBldAAcTGNvbS9hbGliYWJhL2Zhc3RzcWwvRGJUeXBlO0wACWhlYWRIaW50c3EAfgAGeHIAKWNvbS5hbGliYWJhLmZhc3RzcWwuc3FsLmFzdC5TUUxPYmplY3RJbXBs5LvqLFggFVECAAVJAAxzb3VyY2VDb2x1bW5JAApzb3VyY2VMaW5lTAAKYXR0cmlidXRlc3QAD0xqYXZhL3V0aWwvTWFwO0wABGhpbnR0ACxMY29tL2FsaWJhYmEvZmFzdHNxbC9zcWwvYXN0L1NRTENvbW1lbnRIaW50O0wABnBhcmVudHQAJ0xjb20vYWxpYmFiYS9mYXN0c3FsL3NxbC9hc3QvU1FMT2JqZWN0O3hwAAAAAAAAAABwcHAAfnIAGmNvbS5hbGliYWJhLmZhc3RzcWwuRGJUeXBlAAAAAAAAAAASAAB4cgAOamF2YS5sYW5nLkVudW0AAAAAAAAAABIAAHhwdAAFbXlzcWxwAAAAAAAAAAAAAAAAc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAB3BAAAAAB4c3EAfgAUAAAAAXcEAAAAAXNyADxjb20uYWxpYmFiYS5mYXN0c3FsLnNxbC5hc3Quc3RhdGVtZW50LlNRTEFsdGVyVGFibGVBZGRDb2x1bW4l5T6CFe//BAIABloAB2Nhc2NhZGVaAAVmaXJzdEwAC2FmdGVyQ29sdW1udAAlTGNvbS9hbGliYWJhL2Zhc3RzcWwvc3FsL2FzdC9TUUxOYW1lO0wAB2NvbHVtbnNxAH4ABkwAC2ZpcnN0Q29sdW1ucQB+ABhMAAhyZXN0cmljdHQAE0xqYXZhL2xhbmcvQm9vbGVhbjt4cQB+AAsAAAAAAAAAAHBwcQB+AA8AAHBzcQB+ABQAAAABdwQAAAABc3IAOWNvbS5hbGliYWJhLmZhc3RzcWwuc3FsLmFzdC5zdGF0ZW1lbnQuU1FMQ29sdW1uRGVmaW5pdGlvbst0gLKZ0qAtAgAmWgANYXV0b0luY3JlbWVudFoADGRpc2FibGVJbmRleFoAB3ByZVNvcnRJAAxwcmVTb3J0T3JkZXJaAAZzdG9yZWRaAAd2aXJ0dWFsWgAHdmlzaWJsZUwACGFubkluZGV4dAApTGNvbS9hbGliYWJhL2Zhc3RzcWwvc3FsL2FzdC9TUUxBbm5JbmRleDtMAAZhc0V4cHJ0ACVMY29tL2FsaWJhYmEvZmFzdHNxbC9zcWwvYXN0L1NRTEV4cHI7TAALY2hhcnNldEV4cHJxAH4AHkwADWNvbFByb3BlcnRpZXNxAH4ABkwAC2NvbGxhdGVFeHBycQB+AB5MAAdjb21tZW50cQB+AB5MAAtjb21wcmVzc2lvbnQALkxjb20vYWxpYmFiYS9mYXN0c3FsL3NxbC9hc3QvZXhwci9TUUxDaGFyRXhwcjtMAAtjb25zdHJhaW50c3EAfgAGTAAIZGF0YVR5cGV0AClMY29tL2FsaWJhYmEvZmFzdHNxbC9zcWwvYXN0L1NRTERhdGFUeXBlO0wABmRiVHlwZXEAfgAKTAALZGVmYXVsdEV4cHJxAH4AHkwACWRlbGltaXRlcnEAfgAeTAASZGVsaW1pdGVyVG9rZW5pemVycQB+AB5MAAZlbmFibGVxAH4AGUwABmVuY29kZXEAfgAfTAAGZm9ybWF0cQB+AB5MABBnZW5lcmF0ZWRBbGF3c0FzcQB+AB5MAAhpZGVudGl0eXQARExjb20vYWxpYmFiYS9mYXN0c3FsL3NxbC9hc3Qvc3RhdGVtZW50L1NRTENvbHVtbkRlZmluaXRpb24kSWRlbnRpdHk7TAASanNvbkluZGV4QXR0cnNFeHBycQB+AB5MAAhtYXBwZWRCeXEAfgAGTAAEbmFtZXEAfgAYTAAMbmxwVG9rZW5pemVycQB+AB5MAAhvblVwZGF0ZXEAfgAeTAAEcmVseXEAfgAZTAAMc2VxdWVuY2VUeXBldAAvTGNvbS9hbGliYWJhL2Zhc3RzcWwvc3FsL2FzdC9BdXRvSW5jcmVtZW50VHlwZTtMAARzdGVwcQB+AB5MAAdzdG9yYWdlcQB+AB5MAAl1bml0Q291bnRxAH4AHkwACXVuaXRJbmRleHEAfgAeTAAIdmFsaWRhdGVxAH4AGUwACXZhbHVlVHlwZXEAfgAeeHEAfgALAAAAAAAAAABwcHEAfgAaAAAAAAAAAAAAAHBwcHBwcHBzcQB+ABQAAAAAdwQAAAAAeHNyADpjb20uYWxpYmFiYS5mYXN0c3FsLnNxbC5hc3Quc3RhdGVtZW50LlNRTENoYXJhY3RlckRhdGFUeXBlqtJac/d+04cCAAVaAAloYXNCaW5hcnlMAAtjaGFyU2V0TmFtZXEAfgABTAAIY2hhclR5cGVxAH4AAUwAB2NvbGxhdGVxAH4AAUwABWhpbnRzcQB+AAZ4cgArY29tLmFsaWJhYmEuZmFzdHNxbC5zcWwuYXN0LlNRTERhdGFUeXBlSW1wbEWL29pc1gZFAgAJSgAObmFtZUhhc2hDb2RlNjRaAAh1bnNpZ25lZFoAEXdpdGhMb2NhbFRpbWVab25lWgAIemVyb2ZpbGxMAAlhcmd1bWVudHNxAH4ABkwABmRiVHlwZXEAfgAKTAAHaW5kZXhCeXEAfgAeTAAEbmFtZXEAfgABTAAMd2l0aFRpbWVab25lcQB+ABl4cQB+AAsAAAAAAAAAAHBwcQB+ACP6BPTvGZVAfgAAAHNxAH4AFAAAAAB3BAAAAAB4cHB0AAR0ZXh0cABwcHBwcQB+ABJwcHBwcHBwcHBwc3IAMmNvbS5hbGliYWJhLmZhc3RzcWwuc3FsLmFzdC5leHByLlNRTElkZW50aWZpZXJFeHBy3DXH1zvWbgkCAARKAApoYXNoQ29kZTY0TAAEbmFtZXEAfgABTAAOcmVzb2x2ZWRDb2x1bW5xAH4ADkwAE3Jlc29sdmVkT3duZXJPYmplY3RxAH4ADnhyACdjb20uYWxpYmFiYS5mYXN0c3FsLnNxbC5hc3QuU1FMRXhwckltcGxs2ypmFJxWrQIAAHhxAH4ACwAAAAAAAAAAcHBwQCnxzH5tIDl0AARob2xvcHBwcHBwcHBwcHBweHBweHBzcQB+ABQAAAAAdwQAAAAAeHNxAH4AFAAAAAB3BAAAAAB4c3IAOGNvbS5hbGliYWJhLmZhc3RzcWwuc3FsLmFzdC5zdGF0ZW1lbnQuU1FMRXhwclRhYmxlU291cmNlRHD7eYJ4eswCAAVMAAdjb2x1bW5zcQB+AAZMAARleHBycQB+AB5MAApwYXJ0aXRpb25zcQB+AAZMAAhzYW1wbGluZ3QAOExjb20vYWxpYmFiYS9mYXN0c3FsL3NxbC9hc3Qvc3RhdGVtZW50L1NRTFRhYmxlU2FtcGxpbmc7TAAMc2NoZW1hT2JqZWN0dAAxTGNvbS9hbGliYWJhL2Zhc3RzcWwvc3FsL3JlcG9zaXRvcnkvU2NoZW1hT2JqZWN0O3hyADhjb20uYWxpYmFiYS5mYXN0c3FsLnNxbC5hc3Quc3RhdGVtZW50LlNRTFRhYmxlU291cmNlSW1wbAqEMenTm5zUAgAESgAPYWxpYXNIYXNoQ29kZTY0TAAFYWxpYXNxAH4AAUwACWZsYXNoYmFja3EAfgAeTAAFaGludHNxAH4ABnhxAH4ACwAAAAAAAAAAcHBwAAAAAAAAAABwcHBwc3EAfgAqAAAAAAAAAABwcHEAfgA0NH7o4UvP9Dt0AAx0X3NoaXl1X25vcGtwcHBwcA=="
            },
            "timestamp": {
                "eventTime": 1605342109000,
                "systemTime": 1605342109259,
                "checkpointTime": 1605342109000
            }
        },
        "version": "0.0.1"
    }