首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在本地Kafka测试中使用对接-组合与端口映射

在本地Kafka测试中使用对接-组合与端口映射
EN

Stack Overflow用户
提问于 2018-07-25 09:00:30
回答 1查看 3.9K关注 0票数 2

我正在尝试获得一个黑匣子服务测试的基础设施,并使用docker-compose运行。我想在Jenkins上这样做,对于多个服务,因此有必要绑定到特定于构建的端口(例如50012而不是9092),因为构建应该能够并行运行。

问题是,生成消息失败了。

这是我的docker-compose.yml

代码语言:javascript
运行
复制
---
version: "3.4"

services:

  zookeeper:
    image: "confluentinc/cp-zookeeper:latest"
    ports:
      - "2181"
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    extra_hosts:
      - "moby:127.0.0.1"

  kafka:
    image: "confluentinc/cp-kafka:latest"
    environment:
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
      KAFKA_PROTOCOL_NAME: INSIDE
      KAFKA_ADVERTISED_PROTOCOL_NAME: OUTSIDE
      KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
      KAFKA_LISTENERS: "OUTSIDE://localhost:50012,INSIDE://kafka:9092"
      KAFKA_ADVERTISED_LISTENERS: "OUTSIDE://localhost:50012,INSIDE://kafka:9092"
      KAFKA_BROKER_ID: 1
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
    ports:
      - "50012:9092"
    extra_hosts:
      - "moby:127.0.0.1"
    depends_on:
      - zookeeper

我没有看到任何错误,但这个错误(我认为是可以忽略的):

代码语言:javascript
运行
复制
ERROR Could not submit metrics to Kafka topic __confluent.support.metrics: Failed to construct kafka producer (io.confluent.support.metrics.BaseMetricsReporter)

当我试图向卡夫卡控制台制作人发送这样的信息时

代码语言:javascript
运行
复制
echo 'my-message' | kafka-console-producer.sh --broker-list localhost:50012 --topic test

我得到了这个异常,并且消息没有被发送:

代码语言:javascript
运行
复制
[2018-07-25 10:56:31,283] ERROR Error when sending message to topic test with key: null, value: 10 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)

60000 ms后,org.apache.kafka.common.errors.TimeoutException:未能更新元数据。

更新:多亏Robin给出了正确的答案,我们才能够通过下面的docker-Compose.yml运行它:

代码语言:javascript
运行
复制
---
version: "3.4"

services:

zookeeper:
    image: "confluentinc/cp-zookeeper:latest"
    environment:
    ZOOKEEPER_CLIENT_PORT: 2181
    ZOOKEEPER_TICK_TIME: 2000
    extra_hosts:
      - "moby:127.0.0.1"

kafka:
    image: "confluentinc/cp-kafka:latest"
    environment:
    KAFKA_BROKER_ID: 1
    KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
    KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT"
    KAFKA_INTER_BROKER_LISTENER_NAME: "INSIDE"
    KAFKA_ADVERTISED_LISTENERS: "INSIDE://kafka:29092,OUTSIDE://localhost:50012"
    KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
    ports:
      - "50012:50012"
    extra_hosts:
      - "moby:127.0.0.1"
    depends_on:
      - zookeeper
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-25 12:30:19

配置的问题是

代码语言:javascript
运行
复制
      KAFKA_ADVERTISED_LISTENERS: "OUTSIDE://localhost:50012,INSIDE://kafka:9092"
[…]
    ports:
      - "50012:9092"

KAFKA_ADVERTISED_LISTENERS就是经纪人所宣传的地址。因此,一方面您将其配置为localhost:50012,但另一方面您将其从Docker 9092公开为外部端口。

如果你只是用

代码语言:javascript
运行
复制
 ports:
      - "50012:50012"

那它应该能正常工作。

查看这个码头工,以获得一个外部和内部公开卡夫卡的工作配置示例。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51514891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档