【发布时间】:2021-11-28 13:42:42
【问题描述】:
我正在使用 Kafka Connect,并在我的连接器插件中启动了一个独立线程,该线程正在侦听端口(例如“9090”)。我想使用这个端口来允许应用程序(在 kafka 环境之外)与我的连接器插件进行通信。
我在 docker-compose 中运行 Kafka Connect(和 kafka 环境)。
问题:如何在 docker compose 中公开端口,以便外部应用程序可以访问我的连接器插件线程侦听器端口?
到目前为止,这是我想出的,但我需要在 kafka 连接组件上公开一个外部端口似乎很奇怪。这是一种合理的做法还是有更好的方法让应用程序与我的连接插件线程侦听器端口进行通信?
以下是我的 docker-compose 文件的一部分,显示了我如何在连接时公开端口“9090”:
:
:
:
connect:
image: confluentinc/cp-kafka-connect:6.2.0
hostname: connect
container_name: connect
depends_on:
- zookeeper
- kafka
ports:
- 8083:8083
- 9090:9090
environment:
CONNECT_BOOTSTRAP_SERVERS: "kafka:9092"
CONNECT_REST_PORT: 8083
CONNECT_REST_ADVERTISED_HOST_NAME: "connect"
:
:
:
【问题讨论】:
-
Connect 只是运行一个 Jetty 服务器。您正在打开一个新端口,所以这有什么问题?请记住,每个 Connect 任务不能在同一主机上打开相同的端口,因此您将被限制为
tasks.max=1 -
@OneCriketeer 正确 - 为了处理音量,我会增加“tasks.max”并添加我需要收听的一系列端口(与 tasks.max 相同的数量)。
-
我假设您会遍历端口以找到下一个打开的端口?但这可能是任务重新平衡的问题......无论如何,例如Syslog connector,基本上需要同样的事情
标签: apache-kafka docker-compose apache-kafka-connect confluent-platform