Отправка двоичных данных ruby ​​и avro в двоичную конечную точку покоя json http - PullRequest
0 голосов
/ 04 мая 2018

Итак, у меня есть конечная точка, которая принимает двоичный тип содержимого json vnd.kafka.binary.v1+json

Я создал объект avro, но как мне отформатировать данные для правильного вызова конечной точки?

  envelope = Hash.new
  # add some stuff to envelope hash
  .....
  envDatumWriter = Avro::IO::DatumWriter.new(envSchema)
  envBuffer = StringIO.new
  envEncoder = Avro::IO::BinaryEncoder.new(envBuffer)
  envDatumWriter.write(envelope,envEncoder)

Должен ли я просто сделать это: envBuffer.string.to_json_raw_object и отправить это в конечную точку?

1 Ответ

0 голосов
/ 07 мая 2018

Я был на правильном пути. Отправить его в конечную точку просто означало, что я должен был сделать некоторые дополнительные вещи, специфичные для дизайна конечной точки. Например, кодировка Base64, а также json.

  envelope = Hash.new
  # add some stuff to envelope hash
  .....
  env_datum_writer = Avro::IO::DatumWriter.new(env_schema)
  env_buffer = StringIO.new("".force_encoding("BINARY"))
  env_encoder = Avro::IO::BinaryEncoder.new(env_buffer)
  env_datum_writer.write(envelope,env_encoder)
  a = Base64.encode64(env_buffer.string.each_byte.to_a.join)
  p_records = Hash.new
  p_records["value"] = a
  p_records_array = [p_records]
...