Java 如何设置Kafka连接器以在Debezium中使用自定义变换?
我是卡夫卡新手,我不知道如何使用“transforms.router.type”使其与我的Debezium设置一起工作。 因此,我对java类进行了特殊的事件转换,并预先进行了配置,以便将其部署到容器中,如下所示: curl-X POST-H“Accept:application/json”-H“内容类型:application/json”localhost:8083/connectors/-dJava 如何设置Kafka连接器以在Debezium中使用自定义变换?,java,apache-kafka,apache-kafka-connect,debezium,Java,Apache Kafka,Apache Kafka Connect,Debezium,我是卡夫卡新手,我不知道如何使用“transforms.router.type”使其与我的Debezium设置一起工作。 因此,我对java类进行了特殊的事件转换,并预先进行了配置,以便将其部署到容器中,如下所示: curl-X POST-H“Accept:application/json”-H“内容类型:application/json”localhost:8083/connectors/-d { "name": "task-connector",
{
"name": "task-connector",
"config": {
"connector.class": "io.debezium.connector.postgresql.PostgresConnector",
"tasks.max": "1",
"slot.name" : "task_engine_saga",
"database.hostname": "postgres",
"database.port": "5432",
"database.user": "postgres",
"database.password": "postgres",
"database.dbname" : "tasks",
"schema.whitelist": "public",
"table.whitelist" : "public.task",
"tombstones.on.delete" : "false",
"transforms" : "router",
"transforms.router.type" : "com.task.connect.TaskEventRouter"
}
}
响应说找不到此配置
CREATE kafka connector task-connector....
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1091 100 516 100 575 8322 9274 --:--:-- --:--:-- --:--:-- 17596{"error_code":400,"message":"Connector configuration is invalid and contains the following 3 error(s):\nInvalid value com.task.connect.TaskEventRouter for configuration transforms.router.type: Class com.task.connect.TaskEventRouter could not be found.\nInvalid value null for configuration transforms.router.type: Not a Transformation\nA value is required\nYou can also find the above list of errors at the endpoint `/connector-plugins/{connectorType}/config/validate`"}
然后,我将我的主机文件夹和jar文件复制到container/connect目录,其中有我的带有事件转换逻辑的java类,但它也没有帮助。有人能帮我告诉我该怎么做才能让这个自定义transforms.router.type与我的Debezium设置一起工作吗
我的集装箱装卸工组合设置:
version: '3'
services:
pgadmin:
container_name: pgadmin_container
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-pgadmin4@pgadmin.org}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
volumes:
- pgadmin:/root/.pgadmin
ports:
- "${PGADMIN_PORT:-5050}:80"
restart: unless-stopped
zookeeper:
image: debezium/zookeeper:1.3
ports:
- 2181:2181
- 2888:2888
- 3888:3888
kafka:
image: debezium/kafka:1.3
ports:
- 9092:9092
links:
- zookeeper
environment:
- ZOOKEEPER_CONNECT=zookeeper:2181
postgres:
image: debezium/example-postgres:1.3
ports:
- 5432:5432
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- PGDATA=/data/postgres
- POSTGRES_DB=${POSTGRES_DB:-task_engine}
connect:
image: debezium/connect:1.3
ports:
- 8083:8083
links:
- kafka
- postgres
environment:
- BOOTSTRAP_SERVERS=kafka:9092
- GROUP_ID=1
- CONFIG_STORAGE_TOPIC=my_connect_configs
- OFFSET_STORAGE_TOPIC=my_connect_offsets
- STATUS_STORAGE_TOPIC=my_connect_statuses
volumes:
postgres:
pgadmin:
我对java类进行了特殊事件转换
据我所知,您没有将这个编译过的类装载到debezium图像中,也没有编辑plugin.path
文件以包含该JAR
如果您已经使用该数据创建了自己的Docker映像,那么您应该更改image:debezium/connect:1.3
这将解释为什么转换不可用
我对java类进行了特殊事件转换
据我所知,您没有将这个编译过的类装载到debezium图像中,也没有编辑plugin.path
文件以包含该JAR
如果您已经使用该数据创建了自己的Docker映像,那么您应该更改image:debezium/connect:1.3
这将解释为什么转换不可用您的
plugin.path
属性是什么样子的?您是否尝试将包含自定义转换的JAR与包含PostgresConnector
的JAR放在同一位置?或者,您可以将包含自定义转换的JAR添加到kafkalib
目录,但那就不那么干净了。@dnault我的connect-distributed.properties中有plugin.path=/kafka/connect。所以我也有debezium连接器postgres文件夹,并把jar文件放在那里,但还是没有运气。在相同的情况下尝试将jar放入卡夫卡/libs。也许在我把这个文件放进卡夫卡文件夹后应该执行某种重新配置脚本?只有在这之后我才应该部署配置?不清楚什么是com.task.connect.TaskEventRouter
。。。你自己加的吗?因为这在Debezium中不存在,正如错误提示的那样,我已经创建了自定义docker映像并复制了转换,这有助于您的plugin.path
属性是什么样子的?您是否尝试将包含自定义转换的JAR与包含PostgresConnector
的JAR放在同一位置?或者,您可以将包含自定义转换的JAR添加到kafkalib
目录,但那就不那么干净了。@dnault我的connect-distributed.properties中有plugin.path=/kafka/connect。所以我也有debezium连接器postgres文件夹,并把jar文件放在那里,但还是没有运气。在相同的情况下尝试将jar放入卡夫卡/libs。也许在我把这个文件放进卡夫卡文件夹后应该执行某种重新配置脚本?只有在这之后我才应该部署配置?不清楚什么是com.task.connect.TaskEventRouter
。。。你自己加的吗?因为这在Debezium中不存在,正如错误提示的那样,我已经创建了自定义docker映像,并复制了转换,这很有帮助