为什么我不能 运行 Kafka 连接器?
Why can I not run a Kafka connector?
背景
首先 - 一些背景知识 - 我正在尝试更多地了解 Kafka 和 Kafka connect。本着这种精神,我正在关注 Mickael Maison 和 Kate Stanley 的早期发行书 'Kafka Connect'。
运行 连接器
很早就(第 2 章 - 连接数据管道中的组件)他们给出了 'How do you run connectors' 的示例。请注意,作者没有使用 Confluent。这里在早期,建议我们创建一个名为sink-config.json的文件,然后创建一个名为topic-to-export[=43的主题=] 使用以下代码行:
bin/kafka-topics.sh --bootstrap-server localhost:9092 \
--create --replication-factor 1 --partitions 1 --topic topic-to-export
然后指示我们“使用 Connect REST API 使用您创建的配置启动连接器”
$ curl -X PUT -H "Content-Type: application/json" \ http://localhost:8083/connectors/file-sink/config --data "@sink-config.json"
错误
但是,当我 运行 这个命令时,它会出现以下错误:
{"error_code":500,"message":"Cannot deserialize value of type `java.lang.String` from Object value (token `JsonToken.START_OBJECT`)\n at [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); line: 1, column: 36] (through reference chain: java.util.LinkedHashMap[\"config\"])"}
正在尝试修复错误
请记住,我仍在努力学习 Kafka 和 Kafka Connect,我做了一个非常简单的搜索,这使我在 Whosebug 上找到了一个 post,这似乎表明这应该是POST 不是 PUT。但是,将其更改为:
curl -d @sink-config.json -H "Content-Type: application/json" -X POST http://localhost:8083/connectors/file-sink/config
只是引发了另一个错误:
{"error_code":405,"message":"HTTP 405 Method Not Allowed"}
我真的不确定从这里到哪里去,因为这 'seems' 是您应该能够获得连接到 运行 的方式。例如,这个 intro 到 Baeldung 的连接器似乎也指定了这种做事方式。
有人知道发生了什么事吗?我不知道从哪里开始...
首先,感谢您阅读我们图书的抢先体验版。
你在这个例子中发现了一个错误!
要启动连接器,推荐的方法是使用 PUT /connectors/file-sink/config
端点,但是我们提供的示例 JSON 不正确。
JSON 文件应该类似于:
{
"name": "file-sink",
"connector.class": "org.apache.kafka.connect.file.FileStreamSinkConnector",
"tasks.max": 1,
"topics": "topic-to-export",
"file": "/tmp/sink.out",
"value.converter": "org.apache.kafka.connect.storage.StringConverter"
}
出现错误是因为有另一个端点可用于启动连接器 POST /connectors
,而我们提供的 JSON 是针对该端点的。
我们建议您使用 PUT /connectors/file-sink/config
,因为同一端点也可用于重新配置连接器。此外,相同的 JSON 文件也可以与 PUT /connector-plugins/{connector-type}/config/validate
端点一起使用。
再次感谢您发现错误并报告它,我们将在接下来的几周内修复该示例。我们也会尽快回复您关于其他问题的邮件。
背景
首先 - 一些背景知识 - 我正在尝试更多地了解 Kafka 和 Kafka connect。本着这种精神,我正在关注 Mickael Maison 和 Kate Stanley 的早期发行书 'Kafka Connect'。
运行 连接器
很早就(第 2 章 - 连接数据管道中的组件)他们给出了 'How do you run connectors' 的示例。请注意,作者没有使用 Confluent。这里在早期,建议我们创建一个名为sink-config.json的文件,然后创建一个名为topic-to-export[=43的主题=] 使用以下代码行:
bin/kafka-topics.sh --bootstrap-server localhost:9092 \
--create --replication-factor 1 --partitions 1 --topic topic-to-export
然后指示我们“使用 Connect REST API 使用您创建的配置启动连接器”
$ curl -X PUT -H "Content-Type: application/json" \ http://localhost:8083/connectors/file-sink/config --data "@sink-config.json"
错误
但是,当我 运行 这个命令时,它会出现以下错误:
{"error_code":500,"message":"Cannot deserialize value of type `java.lang.String` from Object value (token `JsonToken.START_OBJECT`)\n at [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); line: 1, column: 36] (through reference chain: java.util.LinkedHashMap[\"config\"])"}
正在尝试修复错误
请记住,我仍在努力学习 Kafka 和 Kafka Connect,我做了一个非常简单的搜索,这使我在 Whosebug 上找到了一个 post,这似乎表明这应该是POST 不是 PUT。但是,将其更改为:
curl -d @sink-config.json -H "Content-Type: application/json" -X POST http://localhost:8083/connectors/file-sink/config
只是引发了另一个错误:
{"error_code":405,"message":"HTTP 405 Method Not Allowed"}
我真的不确定从这里到哪里去,因为这 'seems' 是您应该能够获得连接到 运行 的方式。例如,这个 intro 到 Baeldung 的连接器似乎也指定了这种做事方式。
有人知道发生了什么事吗?我不知道从哪里开始...
首先,感谢您阅读我们图书的抢先体验版。
你在这个例子中发现了一个错误!
要启动连接器,推荐的方法是使用 PUT /connectors/file-sink/config
端点,但是我们提供的示例 JSON 不正确。
JSON 文件应该类似于:
{
"name": "file-sink",
"connector.class": "org.apache.kafka.connect.file.FileStreamSinkConnector",
"tasks.max": 1,
"topics": "topic-to-export",
"file": "/tmp/sink.out",
"value.converter": "org.apache.kafka.connect.storage.StringConverter"
}
出现错误是因为有另一个端点可用于启动连接器 POST /connectors
,而我们提供的 JSON 是针对该端点的。
我们建议您使用 PUT /connectors/file-sink/config
,因为同一端点也可用于重新配置连接器。此外,相同的 JSON 文件也可以与 PUT /connector-plugins/{connector-type}/config/validate
端点一起使用。
再次感谢您发现错误并报告它,我们将在接下来的几周内修复该示例。我们也会尽快回复您关于其他问题的邮件。