func NewMessageEncoding(schemaRegistryUrls ...string) gbus.Serializer {
	return NewAvroSerializer(schemaRegistryUrls...)
}
NewMessageEncoding creates an instance of Avro and returns gbus.Serializer
package serialization
import (
	"bufio"
	"bytes"
	"encoding/binary"
	"fmt"
	"io"
	"io/ioutil"
	"reflect"
	"sync"
	kafka "github.com/dangkaka/go-kafka-avro"
	"github.com/linkedin/goavro"
	"github.com/sirupsen/logrus"
	"github.com/wework/grabbit/gbus"
)
var _ gbus.Serializer = &Avro{}
type avroDeserializer func(r io.Reader) (interface{}, error)
type avroRelation struct {
	SchemaID     int
	Schema       string
	Codec        *goavro.Codec
	ObjType      reflect.Type
	Deserializer avroDeserializer
}
type AvroMessageGenerated interface {
	Schema() string
	SchemaName() string
	Serialize(w io.Writer) error
}
type Avro struct {
	lock                 *sync.Mutex
	registeredSchemas    map[string]*avroRelation
	registeredObjects    map[int]*avroRelation
	schemaRegistryUrls   []string
	schemaRegistryClient *kafka.CachedSchemaRegistryClient
}