我正在尝试使用
Kafka-Connect
在本地运行 docker-compose
。尽管我很喜欢 Confluence 产品和 Kafka,但有时传递一些配置或找到一个一致的示例是一项巨大的任务。
在我的 docker-compose 文件中,我现在使用 6.0.0
、broker
、zk
和 sr
的 kafka-connect
版本,但我也尝试过旧版本。
经纪人(
confluentinc/cp-server:6.0.0
)失败并显示:
INFO [代理 1 上的管理员管理器]:处理创建主题时出错 请求 CreatableTopic(name='_confluence-license', numPartitions=1, 复制因子=3,分配=[], configs=[CreateableTopicConfig(name='cleanup.policy', value='compact'), CreateableTopicConfig(name='min.insync.replicas', 值='2')],linkName=null,mirrorTopic=null) (kafka.server.AdminManager)
我根本不知道如何将
confluent.topic.replication.factor
作为环境变量传递给我的工作人员。我都添加了:
CONNECT_CONFLUENT_TOPIC_REPLICATION_FACTOR: "1"
CONFLUENT_TOPIC_REPLICATION_FACTOR: "1"
...但它们都被忽略了。 更重要的是,我什至找不到
docs中提到的
_confluent-license
,只有_confluent-command
。
如何才能在
docker-compose
内部本地进行连接工作,而不需要设置 3 个代理?
代理失败了,因为该主题是从它创建的,所以您需要代理上的变量
KAFKA_CONFLUENT_TOPIC_REPLICATION_FACTOR: 1
否则,您需要
cp-kafka
图像,而不是 cp-server
正如 OneCricketeer 指出的,该值必须在代理容器中设置,这也解释了为什么代理容器失败,而不是连接工作线程失败。这绝对是有道理的。 经纪商不会因为客户端配置错误而失败。
可能使寻找解决方案变得更加混乱的是许可证主题复制因子的环境变量和配置属性不遵循常规模式,其中环境变量是大写配置属性,其中点替换为下划线(以及适用的前缀) )。实际上我们得到:
confluent.topic.replication.factor
-> KAFKA_CONFLUENT_TOPIC_REPLICATION_FACTOR