Pu sh сообщения в формате avro через golang на kafka - PullRequest
0 голосов
/ 30 января 2020

Я пытался доставить sh несколько сообщений в kafka через клиент go слияния, но суть в том, что сообщения нужно отправлять в формате avro. То же самое может быть легко достигнуто в java приложении Springboot.

У меня есть предчувствие, как будто это вообще возможно с помощью клиентского клиента go. Хотя у меня есть альтернатива pu sh этим сообщениям через слитый прокси-сервер остатка, но это будет означать снижение производительности в 3-4 раза, что я бы не допустил.

Я попытался goAvro конвертировать сообщения в avro. Хотя я не получаю никаких ошибок при создании, но часть данных не сохраняется в формате avro. enter image description here

avroCodec, err := goavro.NewCodec(schemaString)

if err != nil {
    log.Panic(err.Error())
}

appointmentByte,_ := json.Marshal(appointment)

native, _, _ := avroCodec.NativeFromTextual(appointmentByte)

binaryValue, _ := avroCodec.BinaryFromNative(nil,  native)

var recordValue []byte

schemaIDBytes := make([]byte, 4)
binary.BigEndian.PutUint32(schemaIDBytes, uint32(id))

recordValue = append(recordValue, byte(0))
recordValue = append(recordValue, schemaIDBytes...)
recordValue = append(recordValue, binaryValue...)

log.Print(recordValue)

key, _ := uuid.NewUUID()

fmt.Print(key.String())
p.Produce(&kafka.Message{
    TopicPartition: kafka.TopicPartition{
        Topic: &topic, Partition: kafka.PartitionAny},
    Key: []byte(key.String()), Value: recordValue}, nil)

1 Ответ

0 голосов
/ 30 января 2020

Вы можете найти Github для решения вашей проблемы. В настоящее время он не является частью проекта, но он работает над

https://github.com/confluentinc/confluent-kafka-go/issues/69

...