qmp-testing-suite/golang-producer-consumer/vendor/gitlab-app.eng.qops.net/golang/qmp/qsl/README.md

1.4 KiB
Executable File

Qualtrics Serialization Go Library

NOTE: The Go QSL library does not support fast filtering or partial decoding. It does support full decoding and re-encoding into a smaller, compatible schema. NOTE: The schema spec compatibility checking does not play nicely with complex schema declarations. It cannot interpret the compatibility of a union with any schema spec.


Installation

go get gitlab.app-eng.qops.net/golang/qmp/serialization

Usage

Initialize

import qsl "gitlab-app.eng.qops.net/golang/qmp/serialization"

// ...

err := qsl.RegisterApplication("my-client-name")
if err != nil { /* handle */ }

Read QMessages

qr, err := qsl.NewReader("schema.name.v1")
if err != nil { /* handle */ }

// ...

qm, err := qr.NewMessage(encodedAvroObject)
if err != nil { /* handle */ }

Write QMessages

qw, err := qsl.NewWriter("schema.name.v1")
if err != nil { /* handle */ }

// Blank QMessage from writer's schema
msg, err := qw.NewMessage()
if err != nil { /* handle */ }
msg.SetTraceID("Look at me, I'm Mr. Meeseeks")

// QMessage from a QMessage compatible with writer's schema
msg, err = qw.NewFromQMessage(msg)
if err != nil { /* handle */ }

// QMessage from a map of the writer schema's fields and their values
msg, err = qw.NewFromObject(map[string]interface{}{"schema_id":"my.schema.v1"})
if err != nil { /* handle */ }