为什么我的 Kafka connect sink 集群只有一个 worker 处理消息?
Why my Kafka connect sink cluster only has one worker processing messages?
我最近在我的电脑上设置了一个本地 Kafka 用于测试和开发目的:
- 3 位经纪人
- 一个输入主题
- Kafka 在主题和弹性搜索之间连接接收器
我设法在独立模式下配置它,所以一切都是本地主机,Kafka 连接是使用 ./connect-standalone.sh
脚本启动的。
我现在要做的是 运行 我的连接器处于分布式模式,因此 Kafka 消息可以分离到两个 worker 中。
我已经启动了两个工作人员(仍然在同一台机器上的所有内容),但是当我向我的 Kafka 主题发送消息时,只有一个工作人员(最后启动的)正在处理消息。
所以我的问题是:为什么只有一个工人在处理 Kafka 消息而不是两个?
当我杀死其中一个 worker 时,另一个将消息流带回来,所以我认为集群设置良好。
我的看法:
我没有在我的 Kafka 消息中放入 Keys,是否与此有关?
我运行在本地主机中设置所有内容,分布式模式可以这样工作吗? (我已经正确配置了特定的唯一字段,例如 ret.port
)
已解决:
来自 Kafka 文档:
The division of work between tasks is shown by the partitions that each task is assigned
如果不使用分区(将所有消息推送到同一个分区),工作人员将无法拆分消息。
您不需要使用消息密钥,您可以将消息以循环方式推送到不同的分区。
参见:https://docs.confluent.io/current/connect/concepts.html#distributed-workers
我最近在我的电脑上设置了一个本地 Kafka 用于测试和开发目的:
- 3 位经纪人
- 一个输入主题
- Kafka 在主题和弹性搜索之间连接接收器
我设法在独立模式下配置它,所以一切都是本地主机,Kafka 连接是使用 ./connect-standalone.sh
脚本启动的。
我现在要做的是 运行 我的连接器处于分布式模式,因此 Kafka 消息可以分离到两个 worker 中。 我已经启动了两个工作人员(仍然在同一台机器上的所有内容),但是当我向我的 Kafka 主题发送消息时,只有一个工作人员(最后启动的)正在处理消息。
所以我的问题是:为什么只有一个工人在处理 Kafka 消息而不是两个?
当我杀死其中一个 worker 时,另一个将消息流带回来,所以我认为集群设置良好。
我的看法:
我没有在我的 Kafka 消息中放入 Keys,是否与此有关?
我运行在本地主机中设置所有内容,分布式模式可以这样工作吗? (我已经正确配置了特定的唯一字段,例如
ret.port
)
已解决:
来自 Kafka 文档:
The division of work between tasks is shown by the partitions that each task is assigned
如果不使用分区(将所有消息推送到同一个分区),工作人员将无法拆分消息。 您不需要使用消息密钥,您可以将消息以循环方式推送到不同的分区。
参见:https://docs.confluent.io/current/connect/concepts.html#distributed-workers