0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

kafka rest proxy

Last updated at Posted at 2021-02-03

(重要)ただの推測で裏取りが出来ているわけではない話なので、そのつもりで読んでください。

Kafka rest proxy でメッセージを Produce する際は、一般的には次のように送り込んでいると思う。

$ curl -X POST http://localhost:8082/topics/name \
    -H Content-Type:application/vnd.kafka.json.v2+json \
    --data '{"records":[{"value":"test"}]}'

上の例では json として埋め込んでいるけれども、binary として埋め込むこともできる。

$ curl -X POST http://localhost:8082/topics/name \
    -H Content-Type:application/vnd.kafka.binary.v2+json \
    --data '{"records":[{"value":"dGVzdAo="}]}'

公式ドキュメントでは、そのほかのパターンも記載されている。もっと言うと application/json も後方互換性として残されていると記載されている。ところがメッセージを Produce する際にはこれは使えないなぜだろうか

ソースコードを眺めると、次のように書いてある。

  // These are defaults that track the most recent API version. These should always be specified
  // anywhere the latest version is produced/consumed.
  public static final String JSON = "application/json";

現行の API では使えそうな雰囲気をだしている。ドキュメントに戻ると、省略時は embed は binary と解釈すると書かれているので、上の二つ目の例の形で良さそうだが、動作しない。

解釈をすすめると most recent API というのは、ひょっとすると V3 API のことを指すのかもしれない。おそらく most recent API と書いた人は、バージョンが上がるたびに API セット全体が更新されるイメージを持って書いていたようだ。ところが実際の V3 API は API セット全体を更新するものではなく、既存の API に cluster 操作を追加した増築部分を指している。おそらくここでねじれたと思われる。application/json は V2 API では使用できなくなり、よって後方互換性もなくなった、と。残念。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?