{"id":46849,"date":"2023-08-28T16:49:49","date_gmt":"2022-11-17T04:39:50","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/confluent%e5%b9%b3%e5%8f%b0%e5%a4%87%e5%bf%98%e5%bd%95-%ef%bc%883%ef%bc%89%e6%a8%a1%e5%bc%8f%e6%b3%a8%e5%86%8c%e7%ae%80%e6%98%93%e6%b5%8b%e8%af%95\/"},"modified":"2024-04-30T20:28:50","modified_gmt":"2024-04-30T12:28:50","slug":"confluent%e5%b9%b3%e5%8f%b0%e5%a4%87%e5%bf%98%e5%bd%95-%ef%bc%883%ef%bc%89%e6%a8%a1%e5%bc%8f%e6%b3%a8%e5%86%8c%e7%ae%80%e6%98%93%e6%b5%8b%e8%af%95","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/confluent%e5%b9%b3%e5%8f%b0%e5%a4%87%e5%bf%98%e5%bd%95-%ef%bc%883%ef%bc%89%e6%a8%a1%e5%bc%8f%e6%b3%a8%e5%86%8c%e7%ae%80%e6%98%93%e6%b5%8b%e8%af%95\/","title":{"rendered":"Confluent\u5e73\u53f0\u5907\u5fd8\u5f55-\uff083\uff09\u6a21\u5f0f\u6ce8\u518c\u7b80\u6613\u6d4b\u8bd5"},"content":{"rendered":"<h1>\u9996\u5148<\/h1>\n<p>\u8fd9\u662f\u4f7f\u7528Confluent\u5e73\u53f0\u7684\u8bb0\u5f55\u3002<br \/>\n\u8fd9\u6b21\u6211\u4eec\u5c06\u5c1d\u8bd5\u4f7f\u7528Schema Registry\u8fdb\u884c\u6d88\u606f\u7684\u53d1\u9001\u548c\u63a5\u6536\u3002<\/p>\n<h2>\u76f8\u5173\u6587\u7ae0<\/h2>\n<p>Confluent\u5e73\u53f0\u5907\u5fd8\u5f55 &#8211; \uff081\uff09\u73af\u5883\u8bbe\u7f6e<br \/>\nConfluent\u5e73\u53f0\u5907\u5fd8\u5f55 &#8211; \uff082\uff09\u7b80\u6613\u6d88\u606f\u53d1\u9001\u548c\u63a5\u6536\u6d4b\u8bd5<br \/>\nConfluent\u5e73\u53f0\u5907\u5fd8\u5f55 &#8211; \uff083\uff09Schema\u6ce8\u518c\u8868\u7b80\u6613\u6d4b\u8bd5<\/p>\n<h1>\u53ef\u4ee5\u8003\u8651\u7684\u4fe1\u606f\u6765\u6e90<\/h1>\n<p>\u6a21\u5f0f\u6ce8\u518c\u6982\u8ff0<br \/>\nAvro\u6a21\u5f0f\u5e8f\u5217\u5316\u5668\u548c\u53cd\u5e8f\u5217\u5316\u5668<br \/>\nApache Avro\u2122 1.10.2\u89c4\u8303<br \/>\nAvro\uff0cSchemaRegistry\u5165\u95e8<\/p>\n<h1>\u5173\u4e8eSchema Registry<\/h1>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7b11913a08637a69809f\/7-0.png\" alt=\"image.png\" \/><\/div>\n<p>\u6211\u8ba4\u4e3a\u4f1a\u6709\u8fd9\u6837\u7684\u6d41\u7a0b\u3002<\/p>\n<p>\u5728\u6d88\u606f\u53d1\u9001\u65f6\uff1a<br \/>\n\u51c6\u5907\u6d88\u606f\u683c\u5f0f\u7684Schema\uff08Avro\uff0cJSON\u7b49\uff09\u3002<br \/>\n\u751f\u4ea7\u8005\u6839\u636eSchema\u5bf9\u6570\u636e\u8fdb\u884c\u5e8f\u5217\u5316\u3002<br \/>\n\u5c06\u4f7f\u7528\u7684Schema\u6ce8\u518c\u5230Schema Registry\u540e\uff0c\u4f1a\u8fd4\u56de\u4e00\u4e2a\u7528\u4e8e\u6807\u8bc6\u8be5Schema\u7684id\uff0c\u7136\u540e\u5c06id\u548c\u6570\u636e\u4e00\u8d77\u53d1\u9001\u5230Kafka\u7684Topic\u3002<br \/>\n\u6362\u53e5\u8bdd\u8bf4\uff0c\u4f1a\u5c06\u201c\u6b63\u5728\u4f7f\u7528\u6b64Schema\u201d\uff08id\uff09\u548c\u5e8f\u5217\u5316\u540e\u7684\u6570\u636e\u4f5c\u4e3a\u6d88\u606f\u53d1\u9001\u3002<\/p>\n<p>\u6536\u5230\u6d88\u606f\u65f6\uff1a<br \/>\n\u7531\u4e8eSchema id\u548c\u5e8f\u5217\u5316\u6570\u636e\u4e00\u540c\u63a5\u6536\u5230\uff0c\u56e0\u6b64\u6d88\u8d39\u8005\u7aef\u9700\u8981\u4eceSchema\u6ce8\u518c\u8868\u4e2d\u83b7\u53d6\u4e0eid\u5173\u8054\u7684Schema\uff0c\u5e76\u5bf9\u6570\u636e\u8fdb\u884c\u53cd\u5e8f\u5217\u5316\u3002<\/p>\n<p>\u73b0\u5728\uff0c\u65e0\u8bba\u662f\u751f\u4ea7\u8005\u8fd8\u662f\u6d88\u8d39\u8005\uff0c\u90fd\u53ef\u4ee5\u6309\u7167\u9884\u5b9a\u7684\u6a21\u5f0f\uff08\u6d88\u606f\u683c\u5f0f\uff09\u5904\u7406\u6d88\u606f\u3002<\/p>\n<p>\u987a\u4fbf\u63d0\u4e00\u4e0b\uff0c\u5728\u4e0a\u56fe\u4e2d\uff0cSchema Registry\u88ab\u63cf\u7ed8\u4e3a\u4fdd\u7559Schema\u4fe1\u606f\u7684\u6982\u5ff5\u56fe\uff0c\u4f46\u5b9e\u9645\u4e0aSchema Registry\u4f3c\u4e4e\u5728\u5185\u90e8\u4f7f\u7528Kafka\u4e0a\u7684Topic\u4f5c\u4e3aSchema\u4fe1\u606f\u7684\u5b58\u50a8\u4f4d\u7f6e\u3002\u53c2\u8003\uff1aSchema Registry\u6982\u8ff0-Kafka\u540e\u7aef\u3002<\/p>\n<blockquote><p>Kafka\u88ab\u7528\u4f5cSchema Registry\u7684\u5b58\u50a8\u540e\u7aef\u3002\u4e00\u4e2a\u7279\u6b8a\u7684Kafka\u4e3b\u9898\uff08\u9ed8\u8ba4\u4e3a_schemas\uff09\uff0c\u53ea\u6709\u4e00\u4e2a\u5206\u533a\uff0c\u88ab\u7528\u4f5c\u9ad8\u5ea6\u53ef\u7528\u7684\u9884\u5199\u65e5\u5fd7\u3002\u6240\u6709\u7684\u6a21\u5f0f\u3001\u4e3b\u9898\/\u7248\u672c\u548cID\u5143\u6570\u636e\u4ee5\u53ca\u517c\u5bb9\u6027\u8bbe\u7f6e\u90fd\u4f1a\u4f5c\u4e3a\u6d88\u606f\u8ffd\u52a0\u5230\u8fd9\u4e2a\u65e5\u5fd7\u4e2d\u3002\u56e0\u6b64\uff0c\u4e00\u4e2aSchema Registry\u5b9e\u4f8b\u65e2\u662f_schemas\u4e3b\u9898\u4e0b\u7684\u6d88\u606f\u751f\u4ea7\u8005\uff0c\u4e5f\u662f\u6d88\u606f\u6d88\u8d39\u8005\u3002<\/p><\/blockquote>\n<h1>\u5173\u4e8eAvro Schema<\/h1>\n<p>Avro\u662f\u4e00\u4e2a\u5173\u4e8e\u6570\u636e\u683c\u5f0f\u7684\u89c4\u8303\uff0c\u53ef\u4ee5\u4f7f\u7528Avro Schema\u5b9a\u4e49\u6570\u636e\u7c7b\u578b\u3002\u6211\u8ba4\u4e3a\uff0c\u7c7b\u4f3c\u4e8eJSON\u548cJSON Schema\u7684\u5173\u7cfb\uff0c\u6211\u4eec\u5e94\u8be5\u7406\u89e3Avro\u548cAvro Schema\u7684\u5173\u7cfb\u3002\u5c3d\u7ba1Avro Schema\u662f\u7528JSON\u683c\u5f0f\u7f16\u5199\u7684\uff0c\u8fd9\u53ef\u80fd\u6709\u4e9b\u590d\u6742\uff0c\u4f46\u662fAvro\u6570\u636e\u683c\u5f0f\u548cJSON\u6570\u636e\u683c\u5f0f\u662f\u4e0d\u540c\u7684\u3002<\/p>\n<p>\u5728Schema Registry\u4e2d\uff0c\u6709\u51e0\u79cd\u53ef\u7528\u7684\u6570\u636e\u7c7b\u578b\uff08Schema\u7c7b\u578b\uff09\uff0c\u5176\u4e2d\u4e4b\u4e00\u662fAvro\u3002\u5173\u4e8eAvro\uff0c\u4e3aProducer\u548cConsumer\u5206\u522b\u63d0\u4f9b\u4e86kafka-avro-console-producer\u548ckafka-avro-console-consumer\u547d\u4ee4\uff0c\u4f7f\u7528\u8fd9\u4e9b\u547d\u4ee4\u53ef\u4ee5\u4eceShell\u4e2d\u7b80\u5355\u5730\u786e\u8ba4\u6d88\u606f\u7684\u53d1\u9001\u548c\u63a5\u6536\u3002\u6b64\u5916\uff0c\u8fd9\u4e9b\u547d\u4ee4\u53ef\u4ee5\u8fdb\u884cAvro &lt;=&gt; JSON\u8f6c\u6362\uff0c\u56e0\u6b64\u5728\u5b9e\u9645\u7684\u6570\u636e\u8f93\u5165\u548c\u786e\u8ba4\u65f6\u53ef\u4ee5\u4f7f\u7528JSON\u683c\u5f0f\uff08\u5185\u90e8\u4f1a\u81ea\u52a8\u8f6c\u6362\u4e3aAvro\uff09\u3002<\/p>\n<details>kafka-avro-console-producer &#8211;help<br \/>\n\u8fd9\u4e2a\u5de5\u5177\u5e2e\u52a9\u4ece\u6807\u51c6\u8f93\u5165\u8bfb\u53d6\u6570\u636e\u5e76\u5c06\u5176\u53d1\u5e03\u5230Kafka\u3002<br \/>\n\u9009\u9879 \u63cf\u8ff0<br \/>\n&#8212;&#8212; &#8212;&#8212;&#8212;&#8211;<br \/>\n&#8211;batch-size &lt;\u6574\u6570: \u5927\u5c0f&gt; \u5982\u679c\u672a\u540c\u6b65\u53d1\u9001\uff0c\u8868\u793a\u5728\u5355\u4e2a\u6279\u6b21\u4e2d\u53d1\u9001\u7684\u6d88\u606f\u6570\u91cf\u3002\uff08\u9ed8\u8ba4\u503c: 200\uff09<br \/>\n&#8211;bootstrap-server &lt;\u5b57\u7b26\u4e32: \u8fde\u63a5\u5230\u7684\u670d\u52a1\u5668&gt; \u9664\u975e\u6307\u5b9a&#8211;broker-list\uff08\u5df2\u5f03\u7528\uff09\uff0c\u5426\u5219\u5fc5\u987b\u6307\u5b9a\u3002\u8981\u8fde\u63a5\u7684\u670d\u52a1\u5668\uff08\u4eec\uff09\u3002\u7ecf\u7eaa\u4eba\u5217\u8868\u5b57\u7b26\u4e32\u7684\u683c\u5f0f\u4e3a \u4e3b\u673a1:\u7aef\u53e31,\u4e3b\u673a2:\u7aef\u53e32\u3002<br \/>\n&#8211;broker-list &lt;\u5b57\u7b26\u4e32: \u7ecf\u7eaa\u4eba\u5217\u8868&gt; \u5df2\u5f03\u7528\uff0c\u8bf7\u4f7f\u7528&#8211;bootstrap-server\u4ee3\u66ff\uff1b\u5982\u679c\u6307\u5b9a\u4e86&#8211;bootstrap-server\uff0c\u5219\u5ffd\u7565\u3002\u7ecf\u7eaa\u4eba\u5217\u8868\u5b57\u7b26\u4e32\u7684\u683c\u5f0f\u4e3a \u4e3b\u673a1:\u7aef\u53e31,\u4e3b\u673a2:\u7aef\u53e32\u3002<br \/>\n&#8211;compression-codec [\u5b57\u7b26\u4e32: \u538b\u7f29\u7f16\u89e3\u7801\u5668] \u538b\u7f29\u7f16\u89e3\u7801\u5668\uff1a&#8217;none&#8217;\u3001&#8217;gzip&#8217;\u3001&#8217;snappy&#8217;\u3001&#8217;lz4&#8217;\u6216&#8217;zstd&#8217;\u3002\u5982\u679c\u6ca1\u6709\u6307\u5b9a\u503c\uff0c\u5219\u9ed8\u8ba4\u4e3a&#8217;gzip&#8217;\u3002<br \/>\n&#8211;help \u6253\u5370\u7528\u6cd5\u4fe1\u606f\u3002<br \/>\n&#8211;line-reader &lt;\u5b57\u7b26\u4e32: \u8bfb\u53d6\u5668\u7c7b&gt; \u7528\u4e8e\u4ece\u6807\u51c6\u8f93\u5165\u8bfb\u53d6\u884c\u7684\u7c7b\u540d\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6bcf\u884c\u4f5c\u4e3a\u4e00\u4e2a\u5355\u72ec\u7684\u6d88\u606f\u8bfb\u53d6\u3002\uff08\u9ed8\u8ba4\u503c: kafka.tools.ConsoleProducer$LineMessageReader\uff09<br \/>\n&#8211;max-block-ms &lt;\u6574\u6570: \u6700\u5927\u963b\u585e\u65f6\u95f4&gt; \u751f\u4ea7\u8005\u5728\u53d1\u9001\u8bf7\u6c42\u671f\u95f4\u6700\u591a\u963b\u585e\u7684\u65f6\u95f4\uff08\u9ed8\u8ba4\u503c: 60000\uff09<br \/>\n&#8211;max-memory-bytes &lt;\u6574\u6570: \u603b\u5185\u5b58\u5b57\u8282\u6570&gt; \u751f\u4ea7\u8005\u7528\u4e8e\u7f13\u51b2\u7b49\u5f85\u53d1\u9001\u5230\u670d\u52a1\u5668\u7684\u8bb0\u5f55\u7684\u603b\u5185\u5b58\u3002\uff08\u9ed8\u8ba4\u503c: 33554432\uff09<br \/>\n&#8211;max-partition-memory-bytes &lt;\u6574\u6570: \u6bcf\u4e2a\u5206\u533a\u7684\u5185\u5b58\u5b57\u8282\u6570&gt; \u4e3a\u5206\u533a\u5206\u914d\u7684\u7f13\u51b2\u533a\u5927\u5c0f\u3002\u5f53\u63a5\u6536\u5230\u5c0f\u4e8e\u6b64\u5927\u5c0f\u7684\u8bb0\u5f55\u65f6\uff0c\u751f\u4ea7\u8005\u5c06\u5c1d\u8bd5\u5c06\u5176\u4e50\u89c2\u5730\u5408\u5e76\u5728\u4e00\u8d77\uff0c\u76f4\u5230\u8fbe\u5230\u6b64\u5927\u5c0f\u3002\uff08\u9ed8\u8ba4\u503c: 16384\uff09<br \/>\n&#8211;message-send-max-retries &lt;\u6574\u6570&gt; \u7ecf\u7eaa\u4eba\u53ef\u80fd\u7531\u4e8e\u591a\u79cd\u539f\u56e0\u800c\u65e0\u6cd5\u63a5\u6536\u6d88\u606f\uff0c\u5e76\u4e14\u77ed\u6682\u4e0d\u53ef\u7528\u53ea\u662f\u5176\u4e2d\u4e4b\u4e00\u3002\u6b64\u5c5e\u6027\u6307\u5b9a\u5728\u751f\u4ea7\u8005\u653e\u5f03\u5e76\u653e\u5f03\u6b64\u6d88\u606f\u4e4b\u524d\u7684\u91cd\u8bd5\u6b21\u6570\u3002\uff08\u9ed8\u8ba4\u503c: 3\uff09<br \/>\n&#8211;metadata-expiry-ms &lt;\u6574\u6570: \u5143\u6570\u636e\u8fc7\u671f\u95f4\u9694&gt; \u5373\u4f7f\u6ca1\u6709\u770b\u5230\u4efb\u4f55\u9886\u5bfc\u8005\u66f4\u6539\uff0c\u8d85\u65f6\u540e\u6211\u4eec\u4e5f\u4f1a\u5f3a\u5236\u5237\u65b0\u5143\u6570\u636e\u7684\u65f6\u95f4\u6bb5\uff08\u9ed8\u8ba4\u503c: 300000\uff09<br \/>\n&#8211;producer-property &lt;\u5b57\u7b26\u4e32: \u751f\u4ea7\u8005\u5c5e\u6027&gt; \u4ee5\u952e=\u503c\u7684\u5f62\u5f0f\u4f20\u9012\u7528\u6237\u5b9a\u4e49\u7684\u5c5e\u6027\u673a\u5236\u7ed9\u751f\u4ea7\u8005\u3002<br \/>\n&#8211;producer.config &lt;\u5b57\u7b26\u4e32: \u914d\u7f6e\u6587\u4ef6&gt; \u751f\u4ea7\u8005\u914d\u7f6e\u5c5e\u6027\u6587\u4ef6\u3002\u6ce8\u610f\uff0c[producer-property]\u4f18\u5148\u4e8e\u6b64\u914d\u7f6e\u3002<br \/>\n&#8211;property &lt;\u5b57\u7b26\u4e32: \u5c5e\u6027&gt; \u4ee5\u952e=\u503c\u7684\u5f62\u5f0f\u4f20\u9012\u7528\u6237\u5b9a\u4e49\u7684\u5c5e\u6027\u673a\u5236\u7ed9\u6d88\u606f\u8bfb\u53d6\u5668\u3002\u8fd9\u5141\u8bb8\u4e3a\u7528\u6237\u5b9a\u4e49\u7684\u6d88\u606f\u8bfb\u53d6\u5668\u8fdb\u884c\u81ea\u5b9a\u4e49\u914d\u7f6e\u3002\u9ed8\u8ba4\u5c5e\u6027\u5305\u62ec\uff1a<br \/>\nparse.key=true|false<br \/>\nkey.separator=&lt;\u952e\u5206\u9694\u7b26&gt;<br \/>\nignore.error=true|false<br \/>\n&#8211;request-required-acks &lt;\u5b57\u7b26\u4e32: \u8bf7\u6c42\u6240\u9700\u7684\u786e\u8ba4&gt; \u751f\u4ea7\u8005\u8bf7\u6c42\u6240\u9700\u7684\u786e\u8ba4\uff08\u9ed8\u8ba4\u503c: 1\uff09<br \/>\n&#8211;request-timeout-ms &lt;\u6574\u6570: \u8bf7\u6c42\u8d85\u65f6\u65f6\u95f4&gt; \u751f\u4ea7\u8005\u8bf7\u6c42\u7684\u786e\u8ba4\u8d85\u65f6\u65f6\u95f4\u3002\u503c\u5fc5\u987b\u662f\u975e\u8d1f\u4e14\u975e\u96f6\u7684\uff08\u9ed8\u8ba4\u503c: 1500\uff09<br \/>\n&#8211;retry-backoff-ms &lt;\u6574\u6570&gt; \u5728\u6bcf\u6b21\u91cd\u8bd5\u4e4b\u524d\uff0c\u751f\u4ea7\u8005\u4f1a\u5237\u65b0\u76f8\u5173\u4e3b\u9898\u7684\u5143\u6570\u636e\u3002\u7531\u4e8e\u9886\u5bfc\u4eba\u9009\u4e3e\u9700\u8981\u4e00\u6bb5\u65f6\u95f4\uff0c\u6b64\u5c5e\u6027\u6307\u5b9a\u751f\u4ea7\u8005\u5728\u5237\u65b0\u5143\u6570\u636e\u4e4b\u524d\u7b49\u5f85\u7684\u65f6\u95f4\u91cf\u3002\uff08\u9ed8\u8ba4\u503c: 100\uff09<br \/>\n&#8211;socket-buffer-size &lt;\u6574\u6570: \u5927\u5c0f&gt; TCP\u63a5\u6536\u5927\u5c0f\u3002\uff08\u9ed8\u8ba4\u503c: 102400\uff09<br \/>\n&#8211;sync \u5982\u679c\u8bbe\u7f6e\u4e86\u6b64\u9009\u9879\uff0c\u5219\u5bf9\u7ecf\u7eaa\u4eba\u7684\u6d88\u606f\u53d1\u9001\u8bf7\u6c42\u662f\u540c\u6b65\u7684\uff0c\u4e00\u6b21\u53d1\u9001\u4e00\u4e2a\u3002<br \/>\n&#8211;timeout &lt;\u6574\u6570: \u8d85\u65f6\u65f6\u95f4&gt; \u5982\u679c\u8bbe\u7f6e\u5e76\u4e14\u751f\u4ea7\u8005\u5728\u5f02\u6b65\u6a21\u5f0f\u4e0b\u8fd0\u884c\uff0c\u8fd9\u662f\u6d88\u606f\u5728\u6392\u961f\u7b49\u5f85\u8db3\u591f\u7684\u6279\u91cf\u5927\u5c0f\u7684\u6700\u5927\u65f6\u95f4\u3002\u503c\u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d\u3002\uff08\u9ed8\u8ba4\u503c: 1000\uff09<br \/>\n&#8211;topic &lt;\u5b57\u7b26\u4e32: \u4e3b\u9898&gt; \u5fc5\u9700\uff1a\u8981\u53d1\u9001\u6d88\u606f\u7684\u4e3b\u9898\u3002<br \/>\n&#8211;version \u663e\u793aKafka\u7248\u672c\u3002<\/details>\n<details>kafka-avro-console-consumer &#8211;help<br \/>\n\u6b64\u5de5\u5177\u7528\u4e8e\u4eceKafka\u4e3b\u9898\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u8f93\u51fa\u5230\u6807\u51c6\u8f93\u51fa\u3002<br \/>\n\u9009\u9879 \u63cf\u8ff0<br \/>\n&#8212;&#8212; &#8212;&#8212;&#8212;&#8211;<br \/>\n&#8211;bootstrap-server<br \/>\n&#8211;consumer-property<br \/>\n&#8211;consumer.config \u6d88\u8d39\u8005\u914d\u7f6e\u6587\u4ef6\u3002\u6ce8\u610f\uff0c[consumer-property]\u7684\u4f18\u5148\u7ea7\u9ad8\u4e8e\u6b64\u914d\u7f6e\u3002<br \/>\n&#8211;enable-systest-events \u9664\u4e86\u8bb0\u5f55\u5df2\u6d88\u8d39\u6d88\u606f\u5916\uff0c\u8fd8\u8bb0\u5f55\u6d88\u8d39\u8005\u7684\u751f\u547d\u5468\u671f\u4e8b\u4ef6\u3002\uff08\u8fd9\u53ea\u9002\u7528\u4e8e\u7cfb\u7edf\u6d4b\u8bd5\u3002\uff09<br \/>\n&#8211;formatter \u7528\u4e8e\u683c\u5f0f\u5316Kafka\u6d88\u606f\u4ee5\u4f9b\u663e\u793a\u7684\u7c7b\u7684\u540d\u79f0\u3002\uff08\u9ed8\u8ba4\u503c\uff1akafka.tools.DefaultMessageFormatter\uff09<br \/>\n&#8211;from-beginning \u5982\u679c\u6d88\u8d39\u8005\u5c1a\u672a\u6709\u5df2\u5efa\u7acb\u7684\u504f\u79fb\u91cf\u6765\u6d88\u8d39\uff0c\u4ece\u65e5\u5fd7\u4e2d\u6700\u65e9\u7684\u6d88\u606f\u5f00\u59cb\u800c\u4e0d\u662f\u6700\u65b0\u7684\u6d88\u606f\u3002<br \/>\n&#8211;group \u6d88\u8d39\u8005\u7684\u6d88\u8d39\u8005\u7ec4ID\u3002<br \/>\n&#8211;help \u6253\u5370\u4f7f\u7528\u4fe1\u606f\u3002<br \/>\n&#8211;isolation-level \u8bbe\u7f6e\u4e3aread_committed\u4ee5\u8fc7\u6ee4\u51fa\u672a\u63d0\u4ea4\u7684\u4e8b\u52a1\u6d88\u606f\u3002\u8bbe\u7f6e\u4e3aread_uncommitted\u4ee5\u8bfb\u53d6\u6240\u6709\u6d88\u606f\u3002\uff08\u9ed8\u8ba4\u503c\uff1aread_uncommitted\uff09<br \/>\n&#8211;key-deserializer<br \/>\n&#8211;max-messages \u5728\u9000\u51fa\u4e4b\u524d\u8981\u6d88\u8d39\u7684\u6700\u5927\u6d88\u606f\u6570\u91cf\u3002\u5982\u679c\u672a\u8bbe\u7f6e\uff0c\u5219\u6301\u7eed\u6d88\u8d39\u3002<br \/>\n&#8211;offset \u8981\u4ece\u4e2d\u6d88\u8d39\u7684\u504f\u79fb\u91cfID\uff08\u975e\u8d1f\u6570\uff09\uff0c\u6216\u8005&#8217;earliest&#8217;\u8868\u793a\u4ece\u5f00\u5934\u5f00\u59cb\uff0c\u6216\u8005&#8217;latest&#8217;\u8868\u793a\u4ece\u7ed3\u5c3e\u5f00\u59cb\u3002\uff08\u9ed8\u8ba4\u503c\uff1alatest\uff09<br \/>\n&#8211;partition \u8981\u6d88\u8d39\u7684\u5206\u533a\u3002\u5982\u679c\u6ca1\u6709\u6307\u5b9a&#8217;&#8211;offset&#8217;\uff0c\u6d88\u8d39\u5c06\u4ece\u5206\u533a\u7684\u672b\u5c3e\u5f00\u59cb\u3002<br \/>\n&#8211;property \u7528\u4e8e\u521d\u59cb\u5316\u6d88\u606f\u683c\u5f0f\u5316\u7a0b\u5e8f\u7684\u5c5e\u6027\u3002\u9ed8\u8ba4\u5c5e\u6027\u5305\u62ec\uff1a<br \/>\nprint.timestamp=true|false<br \/>\nprint.key=true|false<br \/>\nprint.offset=true|false<br \/>\nprint.partition=true|false<br \/>\nprint.headers=true|false<br \/>\nprint.value=true|false<br \/>\nkey.separator=<br \/>\nline.separator= headers.separator= null.literal=<br \/>\nkey.deserializer=<br \/>\nvalue.deserializer=<br \/>\nheader.deserializer= \u7528\u6237\u8fd8\u53ef\u4ee5\u4f20\u5165\u81ea\u5b9a\u4e49\u7684\u5c5e\u6027\u6765\u914d\u7f6e\u5176\u683c\u5f0f\u5316\u7a0b\u5e8f\uff1b\u5177\u4f53\u6765\u8bf4\uff0c\u7528\u6237\u53ef\u4ee5\u4f20\u5165\u4ee5&#8217;key.deserializer.&#8217;\uff0c&#8217;value.deserializer.&#8217;\u548c&#8217;headers.deserializer.&#8217;\u4e3a\u524d\u7f00\u7684\u5c5e\u6027\u6765\u914d\u7f6e\u5176\u53cd\u5e8f\u5217\u5316\u5668\u3002<br \/>\n&#8211;skip-message-on-error \u5982\u679c\u5904\u7406\u6d88\u606f\u65f6\u53d1\u751f\u9519\u8bef\uff0c\u8df3\u8fc7\u8be5\u6d88\u606f\u800c\u4e0d\u662f\u505c\u6b62\u3002<br \/>\n&#8211;timeout-ms \u5982\u679c\u6307\u5b9a\uff0c\u5219\u5728\u6307\u5b9a\u7684\u65f6\u95f4\u95f4\u9694\u5185\u6ca1\u6709\u53ef\u4f9b\u6d88\u8d39\u7684\u6d88\u606f\u65f6\u9000\u51fa\u3002<br \/>\n&#8211;topic \u8981\u6d88\u8d39\u7684\u4e3b\u9898ID\u3002<br \/>\n&#8211;value-deserializer<br \/>\n&#8211;version \u663e\u793aKafka\u7248\u672c\u3002<br \/>\n&#8211;whitelist \u6307\u5b9a\u8981\u5305\u62ec\u5728\u6d88\u8d39\u4e2d\u7684\u4e3b\u9898\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\u3002<\/details>\n<p>\u6b64\u5916\uff0c\u636e\u770b\u8d77\u6765\uff0cSchema Registry\u8fd8\u63d0\u4f9b\u4e86\u7528\u4e8e\u7ba1\u7406\u7684REST API\uff0c\u53ef\u4ee5\u4f7f\u7528curl\u7b49\u5de5\u5177\u8fdb\u884c\u8bbf\u95ee\u3002Schema Registry API\u53c2\u8003\u8d44\u6599\u3002<\/p>\n<h1>\u4e00\u4e2a\u64cd\u63a7\u7684\u5b9e\u4f8b<\/h1>\n<p>\u6211\u5c06\u5c1d\u8bd5\u6309\u7167\u4ee5\u4e0b\u6240\u793a\u7684\u793a\u4f8b\u8fdb\u884c\u64cd\u4f5c\uff1aAvro\u6a21\u5f0f\u5e8f\u5217\u5316\u548c\u53cd\u5e8f\u5217\u5316 &#8211; Avro\u6a21\u5f0f\u6d4b\u8bd5\u9a71\u52a8\u3002<\/p>\n<h2>\u786e\u8ba4\u6a21\u5f0f\u7c7b\u578b<\/h2>\n<p>\u4f7f\u7528REST API\u53ef\u4ee5\u786e\u8ba4\u5df2\u5728Schema Registry\u4e2d\u6ce8\u518c\u7684\u6a21\u5f0f\u7c7b\u578b\u3002<\/p>\n<pre class=\"post-pre\"><code>[root@test12 ~]# curl http:\/\/localhost:8081\/schemas\/types\r\n[\"JSON\",\"PROTOBUF\",\"AVRO\"]\r\n<\/code><\/pre>\n<p>\u53ef\u4ee5\u786e\u8ba4AVRO\u88ab\u5904\u7406\u3002<br \/>\n\uff08\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u4f3c\u4e4e\u5728Schema\u6ce8\u518c\u8868\u4e2d\u5df2\u7ecf\u5b89\u88c5\u4e86\u4e0a\u8ff03\u79cd\u7c7b\u578b\u7684\u63d2\u4ef6\u3002\uff09<\/p>\n<h2>Schema\u6307\u5b9a\u3067\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u9001\u53d7\u4fe1\u306e\u4f8b1 \/ \u30b7\u30f3\u30d7\u30eb\u306a\u5834\u5408\uff1a<\/h2>\n<p>\u8bd5\u7740\u4f7f\u7528\u7b80\u5355\u7684\u67b6\u6784\u8fdb\u884c\u6d88\u606f\u7684\u53d1\u9001\u548c\u63a5\u6536\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">{<\/span>\r\n  <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"record\"<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"myrecord\"<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"nl\">\"fields\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"f1\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"string\"<\/span>\r\n    <span class=\"p\">}<\/span>\r\n  <span class=\"p\">]<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u4ee5\u4e0a\u7684\u793a\u4f8b\u5c06\u6574\u4e2a\u6d88\u606f\u5b9a\u4e49\u4e3arecord\u7c7b\u578b\uff08\u4e00\u79cd\u590d\u6742\u7c7b\u578b\uff09\u3002\u5728&#8221;fields&#8221;\u90e8\u5206\u5b9a\u4e49\u4e86\u5177\u4f53\u5b57\u6bb5\u3002\u4ee5\u4e0a\u793a\u4f8b\u8868\u793a\u53ea\u6709\u4e00\u4e2a\u540d\u4e3a&#8221;f1&#8243;\u7684String\u7c7b\u578b\u5b57\u6bb5\u7684\u6d88\u606f\u3002<\/p>\n<p>\u8981\u542f\u52a8\u4e00\u4e2a\u6309\u7167\u8fd9\u4e2a\u6a21\u5f0f\u53d1\u9001\u6d88\u606f\u5230 t1-a \u4e3b\u9898\u7684\u751f\u4ea7\u8005\uff0c\u9700\u8981\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002\uff08\u5982\u679c\u4e3b\u9898\u5c1a\u672a\u521b\u5efa\uff0c\u5c06\u4f1a\u81ea\u52a8\u521b\u5efa\uff09<\/p>\n<pre class=\"post-pre\"><code>kafka-avro-console-producer --broker-list localhost:9092 \\\r\n--property schema.registry.url=http:\/\/localhost:8081 \\\r\n--topic t1-a \\\r\n--property value.schema='{\"type\":\"record\",\"name\":\"myrecord\",\"fields\":[{\"name\":\"f1\",\"type\":\"string\"}]}'\r\n<\/code><\/pre>\n<p>\u4e0ekafka-console-producer\u547d\u4ee4\u4e0d\u540c\uff0c\u6b64\u547d\u4ee4\u6ca1\u6709\u63d0\u793a\u4fe1\u606f\uff0c\u56e0\u6b64\u60a8\u9700\u8981\u8f93\u5165\u8981\u8fde\u7eed\u53d1\u9001\u7684\u6d88\u606f\u5e76\u6309\u4e0bEnter\u952e\u3002<\/p>\n<pre class=\"post-pre\"><code>{\"f1\": \"value1-a\"}\r\n<\/code><\/pre>\n<p>\u4f7f\u7528Ctrl+C\u9000\u51fa\u3002<br \/>\n\u63a5\u4e0b\u6765\u5c1d\u8bd5\u542f\u52a8Consumer\u3002\u8bf7\u6307\u5b9a\u4ee5\u4e0b\u7684Topic\u540d\u79f0\u548cSchema Registry\u3002<\/p>\n<pre class=\"post-pre\"><code>kafka-avro-console-consumer --bootstrap-server localhost:9092 \\\r\n--from-beginning --topic t1-a \\\r\n--property schema.registry.url=http:\/\/localhost:8081\r\n<\/code><\/pre>\n<p>\u7136\u540e\uff0c\u5c06\u8fd4\u56de\u4ee5\u4e0b\u6d88\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code>{\"f1\":\"value1-a\"}\r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u53d1\u9001\u7684\u6d88\u606f\u88ab\u539f\u6837\u8fd4\u56de\uff0c\u6240\u4ee5\u5e76\u6ca1\u6709\u592a\u591a\u7684\u4e50\u8da3\uff0c\u4f46\u5728\u80cc\u540e\u5e94\u8be5\u8fdb\u884c\u4e86\u5e8f\u5217\u5316\/\u53cd\u5e8f\u5217\u5316\u3002<\/p>\n<p>\u5728\u6d88\u8d39\u8005\u6267\u884c\u65f6\uff0c\u5c1d\u8bd5\u4f7f\u7528kafka-avro-console-consumer\u547d\u4ee4\uff0c\u5e76\u4f7f\u7528&#8211;property print.schema.ids=true\u53c2\u6570\u8fdb\u884c\u6307\u5b9a\u3002<\/p>\n<pre class=\"post-pre\"><code>[root@test12 \/opt\/confluent-6.2.0\/bin]# .\/kafka-avro-console-consumer --bootstrap-server localhost:9092 --from-beginning --topic t1-a --property schema.registry.url=http:\/\/localhost:8081 --property print.schema.ids=true\r\n{\"f1\":\"value1-a\"}       1\r\n<\/code><\/pre>\n<p>\u901a\u8fc7\u4e0a\u8ff0\u6d88\u606f\u53ef\u77e5\uff0c\u4e0eSchema id\u4e3a1\u76f8\u5173\u8054\u3002<br \/>\n\u5c1d\u8bd5\u4f7f\u7528curl\u4eceSchema Registry\u83b7\u53d6schema id\u4e3a1\u7684\u4fe1\u606f\uff0c\u8fd4\u56de\u5982\u4e0b\u6240\u793a\u3002<\/p>\n<pre class=\"post-pre\"><code>[root@test12 ~]# curl http:\/\/localhost:8081\/schemas\/ids\/1\r\n{\"schema\":\"{\\\"type\\\":\\\"record\\\",\\\"name\\\":\\\"myrecord\\\",\\\"fields\\\":[{\\\"name\\\":\\\"f1\\\",\\\"type\\\":\\\"string\\\"}]}\"}\r\n<\/code><\/pre>\n<p>\u9806\u4fbf\u63d0\u4e00\u4e0b\uff0c\u5982\u679c\u4f7f\u7528kafka-console-consumer\u547d\u4ee4\u800c\u4e0d\u8fdb\u884c\u53cd\u5e8f\u5217\u5316\u6765\u67e5\u770b\u8fd9\u4e2aTopic\uff0c\u4f1a\u53d1\u751f\u4ec0\u4e48\u5462\uff1f<\/p>\n<pre class=\"post-pre\"><code>[root@test12 \/opt\/confluent-6.2.0\/bin]# .\/kafka-console-consumer --bootstrap-server localhost:9092 --from-beginning --topic t1-a\r\nvalue1-a\r\n<\/code><\/pre>\n<p>\u53d8\u6210\u4e86\u8fd9\u6837\u3002<\/p>\n<h2>Schema\u6307\u5b9a\u3067\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u9001\u53d7\u4fe1\u4f8b2 \/ \u30ad\u30fc\u6307\u5b9a<br \/>\n\u4f7f\u7528\u6307\u5b9a\u6a21\u5f0f\u7684\u6d88\u606f\u53d1\u9001\u548c\u63a5\u6536\u793a\u4f8b2 \/ \u6307\u5b9a\u952e<\/h2>\n<p>\u5728Kafka\u7684\u6d88\u606f\u4e2d\uff0c\u6211\u4eec\u53ef\u4ee5\u6dfb\u52a0Key\u3002\u8ba9\u6211\u4eec\u8bd5\u8bd5\u53d1\u9001\u548c\u63a5\u6536\u4f7f\u7528Key\u548cValue\u5206\u522b\u4f7f\u7528\u67b6\u6784\u7684\u6d88\u606f\u3002<\/p>\n<p>\u7528\u4e8e\u5bc6\u94a5\u7684\u67b6\u6784<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">{<\/span><span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span><span class=\"s2\">\"string\"<\/span><span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>Value\u7684\u6a21\u5f0f\uff08\u4e0e\u4e0a\u4f8b\u76f8\u540c\uff09\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">{<\/span>\r\n  <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"record\"<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"myrecord\"<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"nl\">\"fields\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"f1\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"string\"<\/span>\r\n    <span class=\"p\">}<\/span>\r\n  <span class=\"p\">]<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u8981\u542f\u52a8\u4e00\u4e2aProducer\u6765\u53d1\u9001\u5177\u6709\u9075\u5faa\u4e0a\u8ff0\u67b6\u6784\u7684Key\u548cValue\u7684\u6d88\u606f\u5230\u540d\u4e3at2-a\u7684Topic\uff0c\u9700\u8981\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>kafka-avro-console-producer --broker-list localhost:9092 \\\r\n  --topic t2-a \\\r\n  --property parse.key=true \\\r\n  --property \"key.separator= \"\\\r\n  --property key.schema='{\"type\":\"string\"}' \\\r\n  --property value.schema='{\"type\":\"record\",\"name\":\"myrecord\",\"fields\":[{\"name\":\"f1\",\"type\":\"string\"}]}' \\\r\n  --property schema.registry.url=http:\/\/localhost:8081\r\n<\/code><\/pre>\n<p>\u8bf7\u5c06\u4ee5\u4e0b\u5185\u5bb9\u8f93\u5165\u4e3a\u90ae\u4ef6\u6d88\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code>\"key1\" {\"f1\": \"value2-a\"}\r\n\"AAAAA\" {\"f1\": \"TTTTT\"}\r\n\"TEST01\" {\"f1\": \"XXXXXX\"}\r\n<\/code><\/pre>\n<p>\u5728\u53e6\u4e00\u4e2a\u7ec8\u7aef\u8fd0\u884cConsumer\u3002<\/p>\n<pre class=\"post-pre\"><code>kafka-avro-console-consumer --from-beginning --topic t2-a \\\r\n   --bootstrap-server localhost:9092 \\\r\n   --property print.key=true \\\r\n   --property print.schema.ids=true \\\r\n   --property schema.id.separator=: \\\r\n   --property schema.registry.url=http:\/\/localhost:8081\r\n<\/code><\/pre>\n<p>\u7136\u540e\uff0c\u5c06\u8fd4\u56de\u4ee5\u4e0b\u7ed3\u679c\u3002<\/p>\n<pre class=\"post-pre\"><code>\"key1\":2        {\"f1\":\"value2-a\"}:1\r\n\"AAAAA\":2       {\"f1\":\"TTTTT\"}:1\r\n\"TEST01\":2      {\"f1\":\"XXXXXX\"}:1\r\n<\/code><\/pre>\n<p>\u6211\u7528curl\u67e5\u770b\u6a21\u5f0f\u7f16\u53f7\u4e3a2\u7684\u4fe1\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code>[root@test12 ~]# curl http:\/\/localhost:8081\/schemas\/ids\/2\r\n{\"schema\":\"\\\"string\\\"\"}\r\n<\/code><\/pre>\n<p>\u987a\u4fbf\u8bf4\u4e00\u53e5\uff0c\u5982\u679c\u4f60\u7528kafka-console-consumer\u547d\u4ee4\u4e0d\u8fdb\u884c\u53cd\u5e8f\u5217\u5316\u67e5\u770b\uff0c\u7ed3\u679c\u5927\u81f4\u5982\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code>[root@test12 \/opt\/confluent-6.2.0\/bin]# .\/kafka-console-consumer --bootstrap-server localhost:9092 --from-beginning --topic t2-a\r\nvalue2-a\r\n\r\nTTTTT\r\n\r\nXXXXXX\r\n<\/code><\/pre>\n<h2>\u5728Schema\u6307\u5b9a\u4e0b\u7684\u6d88\u606f\u6536\u767c\u793a\u4f8b3 \/ \u8907\u96dcSchema\u3002<\/h2>\n<p>\u6211\u4f1a\u5c1d\u8bd5\u4f7f\u7528\u7a0d\u5fae\u590d\u6742\u4e00\u4e9b\u7684\u6a21\u5f0f\u3002<br \/>\n\u6709\u5173Avro Schema\u7684\u5b9a\u4e49\u65b9\u6cd5\uff0c\u8bf7\u53c2\u8003\u6b64\u5904\u3002<br \/>\nApache Avro\u2122 1.10.2\u89c4\u8303<\/p>\n<p>Key\u7684\u6a21\u5f0f\u8bbe\u8ba1<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">{<\/span><span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span><span class=\"s2\">\"string\"<\/span><span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u7528\u4e8eValue\u7684\u6a21\u5f0f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">{<\/span>\r\n  <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"record\"<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"userInfo\"<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"nl\">\"fields\"<\/span> <span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n      <span class=\"p\">{<\/span><span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"username\"<\/span><span class=\"p\">,<\/span> <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"string\"<\/span><span class=\"p\">},<\/span>\r\n      <span class=\"p\">{<\/span><span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"age\"<\/span><span class=\"p\">,<\/span> <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"int\"<\/span><span class=\"p\">},<\/span>\r\n      <span class=\"p\">{<\/span><span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"phone\"<\/span><span class=\"p\">,<\/span> <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"string\"<\/span><span class=\"p\">},<\/span>\r\n      <span class=\"p\">{<\/span><span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"address\"<\/span><span class=\"p\">,<\/span> <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"record\"<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"nl\">\"name\"<\/span> <span class=\"p\">:<\/span> <span class=\"s2\">\"user_address\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"fields\"<\/span> <span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n            <span class=\"p\">{<\/span><span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"street\"<\/span><span class=\"p\">,<\/span> <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"string\"<\/span><span class=\"p\">},<\/span>\r\n            <span class=\"p\">{<\/span><span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"city\"<\/span><span class=\"p\">,<\/span> <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"string\"<\/span><span class=\"p\">},<\/span>\r\n            <span class=\"p\">{<\/span><span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"country\"<\/span><span class=\"p\">,<\/span> <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"string\"<\/span><span class=\"p\">},<\/span>\r\n            <span class=\"p\">{<\/span><span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"zip\"<\/span><span class=\"p\">,<\/span> <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"string\"<\/span><span class=\"p\">}<\/span>\r\n          <span class=\"p\">]<\/span>\r\n        <span class=\"p\">}<\/span>\r\n      <span class=\"p\">}<\/span>\r\n    <span class=\"p\">]<\/span>\r\n<span class=\"p\">}<\/span>  \r\n<\/code><\/pre>\n<p>\u5229\u7528\u4e0a\u8ff0\u7684\u67b6\u6784\uff0c\u5bf9\u540d\u4e3a`test3&#8217;\u7684\u4e3b\u9898\u8fdb\u884c\u6d88\u606f\u7684\u6536\u53d1\u3002<br \/>\n\u7531\u4e8e\u67b6\u6784\u5f88\u957f\uff0c\u56e0\u6b64\u5c06\u5176\u683c\u5f0f\u5316\u4e3a\u4e0a\u8ff0\u5f62\u5f0f\u7684Schema\uff0c\u521b\u5efa\u4e00\u4e2a\u540d\u4e3aavroSchema3.json\u7684\u6587\u4ef6\uff0c\u5e76\u7528jq\u547d\u4ee4\u5c06\u5176\u8f6c\u6362\u4e3a\u4e00\u884c\uff0c\u7136\u540e\u5c06\u5176\u8bbe\u7f6e\u4e3a\u73af\u5883\u53d8\u91cf\u3002<\/p>\n<pre class=\"post-pre\"><code>[root@test12 ~\/Kafka]# avroSchema3=$(jq --compact-output . avroSchema3.json)\r\n\r\n[root@test12 ~\/Kafka]# echo ${avroSchema3}\r\n{\"type\":\"record\",\"name\":\"userInfo\",\"fields\":[{\"name\":\"username\",\"type\":\"string\"},{\"name\":\"age\",\"type\":\"int\"},{\"name\":\"phone\",\"type\":\"string\"},{\"name\":\"address\",\"type\":{\"type\":\"record\",\"name\":\"user_address\",\"fields\":[{\"name\":\"street\",\"type\":\"string\"},{\"name\":\"city\",\"type\":\"string\"},{\"name\":\"country\",\"type\":\"string\"},{\"name\":\"zip\",\"type\":\"string\"}]}}]}\r\n<\/code><\/pre>\n<p>\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u542f\u52a8\u751f\u4ea7\u8005\u3002<\/p>\n<pre class=\"post-pre\"><code>kafka-avro-console-producer --broker-list localhost:9092 --topic test3 \\\r\n  --property parse.key=true \\\r\n  --property \"key.separator= \"\\\r\n  --property key.schema='{\"type\":\"string\"}' \\\r\n  --property value.schema=${avroSchema3} \\\r\n  --property schema.registry.url=http:\/\/localhost:8081\r\n<\/code><\/pre>\n<p>\u5728\u53e6\u5916\u4e00\u4e2a\u7ec8\u7aef\u7a97\u53e3\u4e2d\u542f\u52a8Consumer\u3002<\/p>\n<pre class=\"post-pre\"><code>kafka-avro-console-consumer --from-beginning --topic test3 \\\r\n   --bootstrap-server localhost:9092 \\\r\n   --property print.key=true \\\r\n   --property print.schema.ids=true \\\r\n   --property schema.id.separator=: \\\r\n   --property schema.registry.url=http:\/\/localhost:8081\r\n<\/code><\/pre>\n<p>\u6211\u5c06\u5c1d\u8bd5\u4ece\u4ee5\u4e0b\u7684\u751f\u4ea7\u8005\u53d1\u9001\u4ee5\u4e0b\u7684\u6570\u636e\u3002<\/p>\n<pre class=\"post-pre\"><code>\"A001\" {\"username\": \"Yamada Ichiro\", \"age\": 31, \"phone\": \"1234-5678\", \"address\":{\"street\": \"1-1\", \"city\": \"chiba\", \"country\": \"Japan\", \"zip\": \"111-2222\"}}\r\n\"A002\" {\"username\": \"Tanaka Jiro\", \"age\": 32, \"phone\": \"2222-2222\", \"address\":{\"street\": \"2-2\", \"city\": \"tokyo\", \"country\": \"Japan\", \"zip\": \"111-2222\"}}\r\n<\/code><\/pre>\n<p>\u6d88\u8d39\u8005\u63a5\u6536\u5230\u4e86\u4ee5\u4e0b\u7684\u6570\u636e\u3002<\/p>\n<pre class=\"post-pre\"><code>\"A001\":2        {\"username\":\"Yamada Ichiro\",\"age\":31,\"phone\":\"1234-5678\",\"address\":{\"street\":\"1-1\",\"city\":\"chiba\",\"country\":\"Japan\",\"zip\":\"111-2222\"}}:3\r\n\"A002\":2        {\"username\":\"Tanaka Jiro\",\"age\":32,\"phone\":\"2222-2222\",\"address\":{\"street\":\"2-2\",\"city\":\"tokyo\",\"country\":\"Japan\",\"zip\":\"111-2222\"}}:3\r\n<\/code><\/pre>\n<p>\u5c1d\u8bd5\u4f7f\u7528kafka-console-consumer\u547d\u4ee4\u63a5\u6536Topictest3\u7684\u6d88\u606f\uff0c\u6ca1\u6709\u8fdb\u884c\u53cd\u5e8f\u5217\u5316\uff0c\u7ed3\u679c\u5982\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code>[root@test12 \/opt\/confluent-6.2.0\/bin]# .\/kafka-console-consumer --bootstrap-server localhost:9092 --from-beginning --topic test3\r\nYamada Ichiro&gt;1234-56781-1\r\nchiba\r\nJapan111-2222\r\nTanaka Jiro@2222-22222-2\r\ntokyo\r\nJapan111-2222\r\n<\/code><\/pre>\n<p>\u4e5f\u8bb8Avro\u4ee5\u4e8c\u8fdb\u5236\u5f62\u5f0f\u4fdd\u5b58\u6570\u636e\uff0c\u6362\u884c\u53ef\u80fd\u6ca1\u6709\u6b63\u786e\u663e\u793a\u3002\u4ece\u8fd9\u53ef\u4ee5\u5f97\u51fa\uff0c\u5185\u90e8\u53ef\u80fd\u6b63\u5e38\u4f7f\u7528\u4e86Schema\u8fdb\u884c\u5e8f\u5217\u5316\/\u53cd\u5e8f\u5217\u5316\u3002<\/p>\n<p>\u987a\u4fbf\u8bf4\u4e00\u4e0b\uff0c\u5f53\u5c06\u7f3a\u5c11\u5b57\u6bb5\u7684\u6570\u636e\u63d2\u5165\u5230\u7528\u4e8eAvro\u7684Producer\/Consumer\u7684Schema\u5b9a\u4e49\u4e2d\u65f6\uff0c\u4f1a\u5bfc\u81f4Producer\u51fa\u9519\u3002<\/p>\n<p>\u53d1\u9001\u90ae\u4ef6<\/p>\n<pre class=\"post-pre\"><code>\"A003\" {\"username\": \"Suzuki Saburo\"}\r\n<\/code><\/pre>\n<p>\u5236\u7247\u4eba\u56e0\u9519\u8bef\u800c\u7ed3\u675f\u3002<\/p>\n<pre class=\"post-pre\"><code>org.apache.kafka.common.errors.SerializationException: Error deserializing json {\"username\": \"Suzuki Saburo\"} to Avro of schema {\"type\":\"record\",\"name\":\"userInfo\",\"fields\":[{\"name\":\"username\",\"type\":\"string\"},{\"name\":\"age\",\"type\":\"int\"},{\"name\":\"phone\",\"type\":\"string\"},{\"name\":\"address\",\"type\":{\"type\":\"record\",\"name\":\"user_address\",\"fields\":[{\"name\":\"street\",\"type\":\"string\"},{\"name\":\"city\",\"type\":\"string\"},{\"name\":\"country\",\"type\":\"string\"},{\"name\":\"zip\",\"type\":\"string\"}]}}]}\r\nCaused by: org.apache.avro.AvroTypeException: Expected int. Got END_OBJECT\r\n        at org.apache.avro.io.JsonDecoder.error(JsonDecoder.java:511)\r\n        at org.apache.avro.io.JsonDecoder.readInt(JsonDecoder.java:165)\r\n        at org.apache.avro.io.ValidatingDecoder.readInt(ValidatingDecoder.java:82)\r\n        at org.apache.avro.generic.GenericDatumReader.readInt(GenericDatumReader.java:551)\r\n        at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:195)\r\n        at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:160)\r\n        at org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:259)\r\n        at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:247)\r\n        at org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:179)\r\n        at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:160)\r\n        at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:153)\r\n        at io.confluent.kafka.schemaregistry.avro.AvroSchemaUtils.toObject(AvroSchemaUtils.java:190)\r\n        at io.confluent.kafka.formatter.AvroMessageReader.readFrom(AvroMessageReader.java:121)\r\n        at io.confluent.kafka.formatter.SchemaMessageReader.readMessage(SchemaMessageReader.java:344)\r\n        at kafka.tools.ConsoleProducer$.main(ConsoleProducer.scala:51)\r\n        at kafka.tools.ConsoleProducer.main(ConsoleProducer.scala)\r\n<\/code><\/pre>\n<h2>\u6574\u7406\u6a21\u5f0f\u4fe1\u606f<\/h2>\n<p>\u5982\u524d\u6240\u8ff0\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7REST\u4eceSchema Registry\u4e2d\u83b7\u53d6\u6a21\u5f0f\u4fe1\u606f\u3002<br \/>\n\u4f8b\u5982\uff0c\u5047\u8bbe\u6211\u4eec\u83b7\u53d6\u4e86\u4ee5\u4e0b\u6a21\u5f0f\u4fe1\u606f\uff08\u793a\u4f8b\u4e3a\u68c0\u7d22\u6a21\u5f0f id \u4e3a 5 \u7684\u4fe1\u606f\uff09\u3002<\/p>\n<pre class=\"post-pre\"><code>[root@test12 ~]# curl http:\/\/localhost:8081\/schemas\/ids\/5\r\n{\"schema\":\"{\\\"type\\\":\\\"record\\\",\\\"name\\\":\\\"FILEA\\\",\\\"namespace\\\":\\\"value.SOURCEDB.VSAM.TEST01\\\",\\\"fields\\\":[{\\\"name\\\":\\\"STAT\\\",\\\"type\\\":[{\\\"type\\\":\\\"string\\\",\\\"logicalType\\\":\\\"CHARACTER\\\",\\\"dbColumnName\\\":\\\"STAT\\\",\\\"length\\\":1},\\\"null\\\"],\\\"doc\\\":\\\"\\\",\\\"default\\\":\\\"\\\"},{\\\"name\\\":\\\"NUMB\\\",\\\"type\\\":[{\\\"type\\\":\\\"string\\\",\\\"logicalType\\\":\\\"CHARACTER\\\",\\\"dbColumnName\\\":\\\"NUMB\\\",\\\"length\\\":6},\\\"null\\\"],\\\"doc\\\":\\\"\\\",\\\"default\\\":\\\"\\\"},{\\\"name\\\":\\\"NAME\\\",\\\"type\\\":[{\\\"type\\\":\\\"string\\\",\\\"logicalType\\\":\\\"CHARACTER\\\",\\\"dbColumnName\\\":\\\"NAME\\\",\\\"length\\\":20},\\\"null\\\"],\\\"doc\\\":\\\"\\\",\\\"default\\\":\\\"\\\"},{\\\"name\\\":\\\"ADDRX\\\",\\\"type\\\":[{\\\"type\\\":\\\"string\\\",\\\"logicalType\\\":\\\"CHARACTER\\\",\\\"dbColumnName\\\":\\\"ADDRX\\\",\\\"length\\\":20},\\\"null\\\"],\\\"doc\\\":\\\"\\\",\\\"default\\\":\\\"\\\"},{\\\"name\\\":\\\"PHONE\\\",\\\"type\\\":[{\\\"type\\\":\\\"string\\\",\\\"logicalType\\\":\\\"CHARACTER\\\",\\\"dbColumnName\\\":\\\"PHONE\\\",\\\"length\\\":8},\\\"null\\\"],\\\"doc\\\":\\\"\\\",\\\"default\\\":\\\"\\\"},{\\\"name\\\":\\\"DATEX\\\",\\\"type\\\":[{\\\"type\\\":\\\"string\\\",\\\"logicalType\\\":\\\"CHARACTER\\\",\\\"dbColumnName\\\":\\\"DATEX\\\",\\\"length\\\":8},\\\"null\\\"],\\\"doc\\\":\\\"\\\",\\\"default\\\":\\\"\\\"},{\\\"name\\\":\\\"AMOUNT\\\",\\\"type\\\":[{\\\"type\\\":\\\"string\\\",\\\"logicalType\\\":\\\"CHARACTER\\\",\\\"dbColumnName\\\":\\\"AMOUNT\\\",\\\"length\\\":8},\\\"null\\\"],\\\"doc\\\":\\\"\\\",\\\"default\\\":\\\"\\\"},{\\\"name\\\":\\\"COMMENT\\\",\\\"type\\\":[{\\\"type\\\":\\\"string\\\",\\\"logicalType\\\":\\\"CHARACTER\\\",\\\"dbColumnName\\\":\\\"COMMENT\\\",\\\"length\\\":9},\\\"null\\\"],\\\"doc\\\":\\\"\\\",\\\"default\\\":\\\"\\\"}]}\"}\r\n<\/code><\/pre>\n<p>\u5982\u6b64\uff0c\u7ed3\u679c\u5c06\u4ee5 JSON \u683c\u5f0f\u8fd4\u56de\uff0c\u5728&#8221;schema&#8221;\u5143\u7d20\u4e2d\u4ee5\u4e00\u884c\u5b57\u7b26\u4e32\u7684\u5f62\u5f0f\u8fd4\u56de\u6a21\u5f0f\u4fe1\u606f\u3002\u4f8b\u5982\uff1a{&#8220;schema&#8221;:&#8221;xxx&#8221;}\u3002\u8fd9\u4e2a\u201cxxx\u201d\u90e8\u5206\u662f\u6240\u9700\u7684\u6a21\u5f0f\uff0c\u4ee5 JSON \u683c\u5f0f\u8868\u793a\u4e3a\u4e00\u4e2a\u5b57\u7b26\u4e32\u6570\u636e\u5143\u7d20\uff0c\u5e76\u4e14\u53cc\u5f15\u53f7\u5df2\u7ecf\u88ab\u8f6c\u4e49\uff08\u5e26\u6709\u53cd\u659c\u6760\uff09\u3002\u5f53\u8fd4\u56de\u7684\u6a21\u5f0f\u6bd4\u8f83\u590d\u6742\u65f6\uff0c\u4f1a\u53d8\u5f97\u975e\u5e38\u96be\u4ee5\u9605\u8bfb\u3002<br \/>\n\u56e0\u6b64\uff0c\u901a\u8fc7\u4e0b\u9762\u7684\u547d\u4ee4\uff0c\u53ef\u4ee5\u5c06\u6a21\u5f0f\u4fe1\u606f\u8fdb\u884c\u6574\u6d01\u7684\u683c\u5f0f\u5316\u8f93\u51fa\u3002<\/p>\n<pre class=\"post-pre\"><code>[root@test12 ~]# curl -s  http:\/\/localhost:8081\/schemas\/ids\/5 | jq -r .schema | jq .\r\n{\r\n  \"type\": \"record\",\r\n  \"name\": \"FILEA\",\r\n  \"namespace\": \"value.SOURCEDB.VSAM.TEST01\",\r\n  \"fields\": [\r\n    {\r\n      \"name\": \"STAT\",\r\n      \"type\": [\r\n        {\r\n          \"type\": \"string\",\r\n          \"logicalType\": \"CHARACTER\",\r\n          \"dbColumnName\": \"STAT\",\r\n          \"length\": 1\r\n        },\r\n        \"null\"\r\n      ],\r\n      \"doc\": \"\",\r\n      \"default\": \"\"\r\n    },\r\n    {\r\n      \"name\": \"NUMB\",\r\n      \"type\": [\r\n        {\r\n          \"type\": \"string\",\r\n          \"logicalType\": \"CHARACTER\",\r\n          \"dbColumnName\": \"NUMB\",\r\n          \"length\": 6\r\n        },\r\n        \"null\"\r\n      ],\r\n      \"doc\": \"\",\r\n      \"default\": \"\"\r\n    },\r\n    {\r\n      \"name\": \"NAME\",\r\n      \"type\": [\r\n        {\r\n          \"type\": \"string\",\r\n          \"logicalType\": \"CHARACTER\",\r\n          \"dbColumnName\": \"NAME\",\r\n          \"length\": 20\r\n        },\r\n        \"null\"\r\n      ],\r\n      \"doc\": \"\",\r\n      \"default\": \"\"\r\n    },\r\n    {\r\n      \"name\": \"ADDRX\",\r\n      \"type\": [\r\n        {\r\n          \"type\": \"string\",\r\n          \"logicalType\": \"CHARACTER\",\r\n          \"dbColumnName\": \"ADDRX\",\r\n          \"length\": 20\r\n        },\r\n        \"null\"\r\n      ],\r\n      \"doc\": \"\",\r\n      \"default\": \"\"\r\n    },\r\n    {\r\n      \"name\": \"PHONE\",\r\n      \"type\": [\r\n        {\r\n          \"type\": \"string\",\r\n          \"logicalType\": \"CHARACTER\",\r\n          \"dbColumnName\": \"PHONE\",\r\n          \"length\": 8\r\n        },\r\n        \"null\"\r\n      ],\r\n      \"doc\": \"\",\r\n      \"default\": \"\"\r\n    },\r\n    {\r\n      \"name\": \"DATEX\",\r\n      \"type\": [\r\n        {\r\n          \"type\": \"string\",\r\n          \"logicalType\": \"CHARACTER\",\r\n          \"dbColumnName\": \"DATEX\",\r\n          \"length\": 8\r\n        },\r\n        \"null\"\r\n      ],\r\n      \"doc\": \"\",\r\n      \"default\": \"\"\r\n    },\r\n    {\r\n      \"name\": \"AMOUNT\",\r\n      \"type\": [\r\n        {\r\n          \"type\": \"string\",\r\n          \"logicalType\": \"CHARACTER\",\r\n          \"dbColumnName\": \"AMOUNT\",\r\n          \"length\": 8\r\n        },\r\n        \"null\"\r\n      ],\r\n      \"doc\": \"\",\r\n      \"default\": \"\"\r\n    },\r\n    {\r\n      \"name\": \"COMMENT\",\r\n      \"type\": [\r\n        {\r\n          \"type\": \"string\",\r\n          \"logicalType\": \"CHARACTER\",\r\n          \"dbColumnName\": \"COMMENT\",\r\n          \"length\": 9\r\n        },\r\n        \"null\"\r\n      ],\r\n      \"doc\": \"\",\r\n      \"default\": \"\"\r\n    }\r\n  ]\r\n}\r\n<\/code><\/pre>\n<p>\u6211\u4f1a\u7b80\u5355\u5730\u8865\u5145\u4e00\u4e0b\u4e0a\u9762\u7684\u547d\u4ee4\u3002<br \/>\n\u4f7f\u7528curl\u83b7\u53d6\u4fe1\u606f\uff0c\u7136\u540e\u4f7f\u7528jq\u547d\u4ee4\u63d0\u53d6\u6240\u9700\u90e8\u5206\u3002\u5177\u4f53\u64cd\u4f5c\u5982\u4e0b\u6240\u793a\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">curl\u3067\u60c5\u5831\u53d6\u5f97<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">jq\u3067schema\u8981\u7d20\u306e\u5024\u306e\u307f\u62bd\u51fa<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">schema\u8981\u7d20\u306e\u5024\u3092\u6539\u3081\u3066jq\u3067\u6574\u5f62\u3057\u3066\u8868\u793a<\/ul>\n<h1>\u8bf7\u5411\u4ee5\u4e0b\u5185\u5bb9\u67e5\u770b<\/h1>\n<p>\u811a\u672c<\/p>\n<pre class=\"post-pre\"><code><span class=\"c\">#!\/bin\/bash<\/span>\r\n\r\n<span class=\"nb\">sudo<\/span> \/opt\/confluent-6.2.0\/bin\/kafka-topics <span class=\"nt\">--list<\/span> <span class=\"nt\">--bootstrap-server<\/span> localhost:9092\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"c\">#!\/bin\/bash<\/span>\r\n\r\n<span class=\"k\">if<\/span> <span class=\"o\">[<\/span> <span class=\"nv\">$# <\/span><span class=\"nt\">-lt<\/span> 1 <span class=\"o\">]<\/span> <span class=\"p\">;<\/span> <span class=\"k\">then\r\n        <\/span><span class=\"nb\">echo<\/span> <span class=\"s2\">\"Usage: \"<\/span>\r\n        <span class=\"nb\">echo<\/span> <span class=\"s2\">\"  \"<\/span> <span class=\"nv\">$0<\/span> <span class=\"s2\">\" &lt;topicName&gt;\"<\/span>\r\n        <span class=\"nb\">exit <\/span>0\r\n<span class=\"k\">fi\r\n\r\n<\/span><span class=\"nv\">topicName<\/span><span class=\"o\">=<\/span><span class=\"nv\">$1<\/span>\r\n\r\n<span class=\"nb\">sudo<\/span> \/opt\/confluent-6.2.0\/bin\/kafka-avro-console-consumer <span class=\"nt\">--bootstrap-server<\/span> localhost:9092 <span class=\"nt\">--from-beginning<\/span> <span class=\"nt\">--topic<\/span> <span class=\"k\">${<\/span><span class=\"nv\">topicName<\/span><span class=\"k\">}<\/span> <span class=\"nt\">--property<\/span> schema.registry.url<span class=\"o\">=<\/span>http:\/\/localhost:8081\r\n\r\n<span class=\"c\">#sudo \/opt\/confluent-6.2.0\/bin\/kafka-avro-console-consumer --bootstrap-server localhost:9092 --from-beginning --topic ${topicName} --property schema.registry.url=http:\/\/localhost:8081 --property print.schema.ids=true<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"c\">#!\/bin\/bash<\/span>\r\n\r\n<span class=\"k\">if<\/span> <span class=\"o\">[<\/span> <span class=\"nv\">$# <\/span><span class=\"nt\">-lt<\/span> 1 <span class=\"o\">]<\/span> <span class=\"p\">;<\/span> <span class=\"k\">then\r\n        <\/span><span class=\"nb\">echo<\/span> <span class=\"s2\">\"Usage: \"<\/span>\r\n        <span class=\"nb\">echo<\/span> <span class=\"s2\">\"  \"<\/span> <span class=\"nv\">$0<\/span> <span class=\"s2\">\" &lt;schemaID&gt;\"<\/span>\r\n        <span class=\"nb\">exit <\/span>0\r\n<span class=\"k\">fi\r\n\r\n<\/span><span class=\"nv\">schemaID<\/span><span class=\"o\">=<\/span><span class=\"nv\">$1<\/span>\r\n\r\ncurl <span class=\"nt\">--silent<\/span>  http:\/\/localhost:8081\/schemas\/ids\/<span class=\"k\">${<\/span><span class=\"nv\">schemaID<\/span><span class=\"k\">}<\/span> | jq <span class=\"nt\">-r<\/span> .schema | jq <span class=\"nb\">.<\/span>\r\n\r\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148 \u8fd9\u662f\u4f7f\u7528Confluent\u5e73\u53f0\u7684\u8bb0\u5f55\u3002 \u8fd9\u6b21\u6211\u4eec\u5c06\u5c1d\u8bd5\u4f7f\u7528Schema Registry\u8fdb\u884c\u6d88\u606f\u7684\u53d1\u9001\u548c [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-46849","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Confluent\u5e73\u53f0\u5907\u5fd8\u5f55-\uff083\uff09\u6a21\u5f0f\u6ce8\u518c\u7b80\u6613\u6d4b\u8bd5 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/confluent\u5e73\u53f0\u5907\u5fd8\u5f55-\uff083\uff09\u6a21\u5f0f\u6ce8\u518c\u7b80\u6613\u6d4b\u8bd5\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Confluent\u5e73\u53f0\u5907\u5fd8\u5f55-\uff083\uff09\u6a21\u5f0f\u6ce8\u518c\u7b80\u6613\u6d4b\u8bd5\" \/>\n<meta property=\"og:description\" content=\"\u9996\u5148 \u8fd9\u662f\u4f7f\u7528Confluent\u5e73\u53f0\u7684\u8bb0\u5f55\u3002 \u8fd9\u6b21\u6211\u4eec\u5c06\u5c1d\u8bd5\u4f7f\u7528Schema Registry\u8fdb\u884c\u6d88\u606f\u7684\u53d1\u9001\u548c [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/confluent\u5e73\u53f0\u5907\u5fd8\u5f55-\uff083\uff09\u6a21\u5f0f\u6ce8\u518c\u7b80\u6613\u6d4b\u8bd5\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-17T04:39:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-30T12:28:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7b11913a08637a69809f\/7-0.png\" \/>\n<meta name=\"author\" content=\"\u65b0, \u97f5\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u65b0, \u97f5\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/confluent%e5%b9%b3%e5%8f%b0%e5%a4%87%e5%bf%98%e5%bd%95-%ef%bc%883%ef%bc%89%e6%a8%a1%e5%bc%8f%e6%b3%a8%e5%86%8c%e7%ae%80%e6%98%93%e6%b5%8b%e8%af%95\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/confluent%e5%b9%b3%e5%8f%b0%e5%a4%87%e5%bf%98%e5%bd%95-%ef%bc%883%ef%bc%89%e6%a8%a1%e5%bc%8f%e6%b3%a8%e5%86%8c%e7%ae%80%e6%98%93%e6%b5%8b%e8%af%95\/\",\"name\":\"Confluent\u5e73\u53f0\u5907\u5fd8\u5f55-\uff083\uff09\u6a21\u5f0f\u6ce8\u518c\u7b80\u6613\u6d4b\u8bd5 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2022-11-17T04:39:50+00:00\",\"dateModified\":\"2024-04-30T12:28:50+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/confluent%e5%b9%b3%e5%8f%b0%e5%a4%87%e5%bf%98%e5%bd%95-%ef%bc%883%ef%bc%89%e6%a8%a1%e5%bc%8f%e6%b3%a8%e5%86%8c%e7%ae%80%e6%98%93%e6%b5%8b%e8%af%95\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/confluent%e5%b9%b3%e5%8f%b0%e5%a4%87%e5%bf%98%e5%bd%95-%ef%bc%883%ef%bc%89%e6%a8%a1%e5%bc%8f%e6%b3%a8%e5%86%8c%e7%ae%80%e6%98%93%e6%b5%8b%e8%af%95\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/confluent%e5%b9%b3%e5%8f%b0%e5%a4%87%e5%bf%98%e5%bd%95-%ef%bc%883%ef%bc%89%e6%a8%a1%e5%bc%8f%e6%b3%a8%e5%86%8c%e7%ae%80%e6%98%93%e6%b5%8b%e8%af%95\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Confluent\u5e73\u53f0\u5907\u5fd8\u5f55-\uff083\uff09\u6a21\u5f0f\u6ce8\u518c\u7b80\u6613\u6d4b\u8bd5\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9\",\"name\":\"\u65b0, \u97f5\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g\",\"caption\":\"\u65b0, \u97f5\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunxin\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/confluent%e5%b9%b3%e5%8f%b0%e5%a4%87%e5%bf%98%e5%bd%95-%ef%bc%883%ef%bc%89%e6%a8%a1%e5%bc%8f%e6%b3%a8%e5%86%8c%e7%ae%80%e6%98%93%e6%b5%8b%e8%af%95\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Confluent\u5e73\u53f0\u5907\u5fd8\u5f55-\uff083\uff09\u6a21\u5f0f\u6ce8\u518c\u7b80\u6613\u6d4b\u8bd5 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/confluent\u5e73\u53f0\u5907\u5fd8\u5f55-\uff083\uff09\u6a21\u5f0f\u6ce8\u518c\u7b80\u6613\u6d4b\u8bd5\/","og_locale":"zh_CN","og_type":"article","og_title":"Confluent\u5e73\u53f0\u5907\u5fd8\u5f55-\uff083\uff09\u6a21\u5f0f\u6ce8\u518c\u7b80\u6613\u6d4b\u8bd5","og_description":"\u9996\u5148 \u8fd9\u662f\u4f7f\u7528Confluent\u5e73\u53f0\u7684\u8bb0\u5f55\u3002 \u8fd9\u6b21\u6211\u4eec\u5c06\u5c1d\u8bd5\u4f7f\u7528Schema Registry\u8fdb\u884c\u6d88\u606f\u7684\u53d1\u9001\u548c [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/confluent\u5e73\u53f0\u5907\u5fd8\u5f55-\uff083\uff09\u6a21\u5f0f\u6ce8\u518c\u7b80\u6613\u6d4b\u8bd5\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2022-11-17T04:39:50+00:00","article_modified_time":"2024-04-30T12:28:50+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d7b11913a08637a69809f\/7-0.png"}],"author":"\u65b0, \u97f5","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u65b0, \u97f5","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"7 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/confluent%e5%b9%b3%e5%8f%b0%e5%a4%87%e5%bf%98%e5%bd%95-%ef%bc%883%ef%bc%89%e6%a8%a1%e5%bc%8f%e6%b3%a8%e5%86%8c%e7%ae%80%e6%98%93%e6%b5%8b%e8%af%95\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/confluent%e5%b9%b3%e5%8f%b0%e5%a4%87%e5%bf%98%e5%bd%95-%ef%bc%883%ef%bc%89%e6%a8%a1%e5%bc%8f%e6%b3%a8%e5%86%8c%e7%ae%80%e6%98%93%e6%b5%8b%e8%af%95\/","name":"Confluent\u5e73\u53f0\u5907\u5fd8\u5f55-\uff083\uff09\u6a21\u5f0f\u6ce8\u518c\u7b80\u6613\u6d4b\u8bd5 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2022-11-17T04:39:50+00:00","dateModified":"2024-04-30T12:28:50+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/confluent%e5%b9%b3%e5%8f%b0%e5%a4%87%e5%bf%98%e5%bd%95-%ef%bc%883%ef%bc%89%e6%a8%a1%e5%bc%8f%e6%b3%a8%e5%86%8c%e7%ae%80%e6%98%93%e6%b5%8b%e8%af%95\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/confluent%e5%b9%b3%e5%8f%b0%e5%a4%87%e5%bf%98%e5%bd%95-%ef%bc%883%ef%bc%89%e6%a8%a1%e5%bc%8f%e6%b3%a8%e5%86%8c%e7%ae%80%e6%98%93%e6%b5%8b%e8%af%95\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/confluent%e5%b9%b3%e5%8f%b0%e5%a4%87%e5%bf%98%e5%bd%95-%ef%bc%883%ef%bc%89%e6%a8%a1%e5%bc%8f%e6%b3%a8%e5%86%8c%e7%ae%80%e6%98%93%e6%b5%8b%e8%af%95\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"Confluent\u5e73\u53f0\u5907\u5fd8\u5f55-\uff083\uff09\u6a21\u5f0f\u6ce8\u518c\u7b80\u6613\u6d4b\u8bd5"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9","name":"\u65b0, \u97f5","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g","caption":"\u65b0, \u97f5"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunxin\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/confluent%e5%b9%b3%e5%8f%b0%e5%a4%87%e5%bf%98%e5%bd%95-%ef%bc%883%ef%bc%89%e6%a8%a1%e5%bc%8f%e6%b3%a8%e5%86%8c%e7%ae%80%e6%98%93%e6%b5%8b%e8%af%95\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/46849","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=46849"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/46849\/revisions"}],"predecessor-version":[{"id":94125,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/46849\/revisions\/94125"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=46849"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=46849"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=46849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}