Kafka - 从命令行生成时出错(字符('<'(代码60)):期望有效值)

时间:2018-04-24 01:50:23

标签: docker apache-kafka confluent confluent-schema-registry

我在我的笔记本电脑上使用Docker中的Kafka(使用docker-compose)。

之后,创建了新的kafka主题:

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

x = np.linspace(0, 20, 100)
plt.plot(x, np.sin(x))
plt.show()

(尚未在Schema Registry中创建架构)。

现在尝试制作(基于此示例 - 步骤3 - https://docs.confluent.io/4.0.0/quickstart.html):

kafka-topics --zookeeper localhost:2181  --create --topic simple    --replication-factor 1 --partitions 1

输入值:

kafka-avro-console-producer \
         --broker-list localhost:9092 --topic simple \
         --property value.schema='{"type":"record","name":"myrecord","fields":[{"name":"f1","type":"string"}]}'

错误:

{"f1": "value1"}

如何解决这个问题?
是不是因为Kafka集群使用SSL但错误是假的? 感谢。

2 个答案:

答案 0 :(得分:0)

默认情况下,

If NPCodes Like "*Document1*" Then Set NPCodes_Doc117 = Documents.Open(NPCodes_Path & "\" & "Document1.docx") Selection.WholeStory Selection.Font.Name = "Arial" Selection.ParagraphFormat.SpaceAfter = 0 Selection.ParagraphFormat.SpaceBefore = 0 Selection.ParagraphFormat.LineSpacing = 12 Selection.Copy Documents("Code Template.docm").Activate Selection.EndKey Unit:=wdLine Selection.Collapse Direction:=wdCollapseEnd Selection.Paste End If 假定Schema Registry正在侦听端口On Error Resume Next NPCodes_Doc1.Close False NPCodes_Doc2.Close False NPCodes_Doc3.Close False NPCodes_Doc4.Close False NPCodes_Doc5.Close False .... _Doc118.Close False On Error GoTo 0 。但是,如果另一个进程正在侦听该端口,则可能会发生奇怪的错误。

为了解决此问题,您可以在使用kafka-avro-console-producer运行生产者时指定架构URL

例如,

http://localhost:8081

答案 1 :(得分:0)

我有相同的错误,但我的解决方案不同。如果有人发现此功能有用,我会在这里发布。

此错误与访问架构注册表和预期的响应有关。因此,要么配置不正确,客户端就无法评估架构注册表,或者无法识别响应。

  1. 因此,请检查您是否提供了正确的配置,在此情况下,--property schema.registry.urlGiorgos所述。另请参阅:https://docs.confluent.io/5.5.1/schema-registry/serdes-develop/serdes-avro.html

  2. 您还可以curl架构注册表以查看是否收到任何响应,例如

    curl -X GET http://localhost:8081/subjects
    

    另请参阅:https://docs.confluent.io/5.5.1/schema-registry/develop/using.html


  1. 就我而言,问题是过滤流量的Web代理。所以检查:

    • NO_PROXYno_proxy以及
    • HTTP_PROXYhttp_proxy
    • HTTPS_PROXYhttps_proxy

    以确保没有任何内容拦截对注册表的调用。如果要创建jvm应用程序,则相应的标志为:

    • http.nonProxyHosts
    • http.proxyHosthttp.proxyPort,或
    • https.proxyHosthttps.proxyPort