1.6. Kafka Bridge へのリクエスト
データ形式と HTTP ヘッダーを指定し、有効なリクエストが Kafka Bridge に送信されるようにします。
1.6.1. Content-Type ヘッダー
API リクエストおよびレスポンス本文は、常に JSON としてエンコードされます。
コンシューマー操作の実行時に、
POST
リクエストの本文が空でない場合は、以下のContent-Type
ヘッダーが含まれている必要があります。Content-Type: application/vnd.kafka.v2+json
プロデューサー操作を行う場合に、
POST
リクエストには、生成されるメッセージの 埋め込みデータ形式 を示すContent-Type
ヘッダーを指定する必要があります。これは、json
、binary
、またはtext
のいずれかになります。埋め込みデータ形式 Content-Type ヘッダー JSON
Content-Type: application/vnd.kafka.json.v2+json
バイナリー
Content-Type: application/vnd.kafka.binary.v2+json
テキスト
Content-Type: application/vnd.kafka.text.v2+json
次のセクションで説明されているように、埋め込みデータ形式はコンシューマーごとに設定されます。
POST
リクエストの本文が空の場合は、Content-Type
を設定しないでください。空の本文を使用して、デフォルト値のコンシューマーを作成できます。
1.6.2. 埋め込みデータ形式
埋め込みデータ形式は、Kafka メッセージが Kafka Bridge によりプロデューサーからコンシューマーに HTTP で送信される際の形式です。サポート対象の埋め込みデータ形式には、JSON、バイナリー、およびテキストの 3 種類があります。
/consumers/groupid
エンドポイントを使用してコンシューマーを作成する場合、POST
リクエスト本文で JSON、バイナリー、またはテキストの埋め込みデータ形式を指定する必要があります。これは、以下の例のように format
フィールドで指定します。
{
"name": "my-consumer",
"format": "binary", 1
# ...
}
- 1
- バイナリー埋め込みデータ形式。
コンシューマーの作成時に指定する埋め込みデータ形式は、コンシューマーが消費する Kafka メッセージのデータ形式と一致する必要があります。
バイナリー埋め込みデータ形式を指定する場合は、以降のプロデューサーリクエストで、リクエスト本文にバイナリーデータが Base64 でエンコードされた文字列として含まれる必要があります。たとえば、/topics/topicname
エンドポイントを使用してメッセージを送信する場合は、records.value
を Base64 でエンコードする必要があります。
{ "records": [ { "key": "my-key", "value": "ZWR3YXJkdGhldGhyZWVsZWdnZWRjYXQ=" }, ] }
プロデューサーリクエストには、埋め込みデータ形式に対応する Content-Type
ヘッダーも含まれる必要があります (例: Content-Type: application/vnd.kafka.binary.v2+json
)。
1.6.3. メッセージの形式
/topics
エンドポイントを使用してメッセージを送信する場合は、records
パラメーターのリクエスト本文にメッセージペイロードを入力します。
records
パラメーターには、以下のオプションフィールドを含めることができます。
-
Message
headers
-
Message
key
-
Message
value
-
Destination
partition
/topics への POST
リクエストの例
curl -X POST \
http://localhost:8080/topics/my-topic \
-H 'content-type: application/vnd.kafka.json.v2+json' \
-d '{
"records": [
{
"key": "my-key",
"value": "sales-lead-0001",
"partition": 2,
"headers": [
{
"key": "key1",
"value": "QXBhY2hlIEthZmthIGlzIHRoZSBib21iIQ==" 1
}
]
}
]
}'
- 1
- バイナリー形式のヘッダー値。Base64 としてエンコードされます。
コンシューマーが text 埋め込みデータ形式を使用するように設定されている場合、records
パラメーターの 値
および キー
フィールドは、JSON オブジェクトではなく文字列でなければならないことに注意してください。
1.6.4. Accept ヘッダー
コンシューマーを作成したら、以降のすべての GET リクエストには Accept
ヘッダーが以下のような形式で含まれる必要があります。
Accept: application/vnd.kafka.EMBEDDED-DATA-FORMAT.v2+json
EMBEDDED-DATA-FORMAT
は json
、binary
、または text
のいずれかです。
たとえば、サブスクライブされたコンシューマーのレコードを JSON 埋め込みデータ形式で取得する場合は、この Accept ヘッダーが含まれるようにします。
Accept: application/vnd.kafka.json.v2+json