.net 无法从其他容器连接到Kafka Docker容器:连接被拒绝-1/1代理已关闭

.net 无法从其他容器连接到Kafka Docker容器:连接被拒绝-1/1代理已关闭,.net,docker,apache-kafka,.net,Docker,Apache Kafka,我正在尝试将数据聚合器连接到kafka代理,目的是从HTTP端点收集数据,并定期将其保存到数据库。两者都在docker中运行,使用以下docker-compose.yml: version: "3" services: zk: image: confluentinc/cp-zookeeper:5.0.0 container_name: zk ports: - 2181:2181 environment: ZOOKEEPER_CLIEN

我正在尝试将数据聚合器连接到kafka代理,目的是从HTTP端点收集数据,并定期将其保存到数据库。两者都在docker中运行,使用以下docker-compose.yml:

version: "3"

services:
  zk:
    image: confluentinc/cp-zookeeper:5.0.0
    container_name: zk
    ports:
      - 2181:2181
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    restart: on-failure:5
  kafka:
    image: confluentinc/cp-kafka:5.0.0
    container_name: kafka
    ports:
      - 9092:9092
      - 9094:9094
    environment:
      KAFKA_ZOOKEEPER_CONNECT: zk:2181
      KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:9092,OUTSIDE://localhost:9094
      KAFKA_LISTENERS: INSIDE://0.0.0.0:9092,OUTSIDE://0.0.0.0:9094
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
      KAFKA_NUM_PARTITIONS: 4
    restart: on-failure:5
  tinygator-metric-aggregator:
    image: tinygator.aggregator:latest
    container_name: tg-aggregator
    environment:
      KAFKA_BOOTSTRAP_SERVER: localhost:9094
      KAFKA_TOPIC: test
      METRIC_ENDPOINT: "http://localhost:15672/api/queues/%2F/Test?sort=message_stats.publish_details.rate&sort_reverse=true&columns=name,message_stats.publish_details.rate,message_stats.deliver_get_details.rate"
      METRIC_METHOD: GET
      METRIC_INTERVAL: 5000
      METRIC_HEADERS: '{"authorization":"Basic Z3Vlc3Q6Z3Vlc3Q="}'
    restart: on-failure:5
卡夫卡和zk似乎开始正常。但是,聚合器出现以下错误:

tg-aggregator                  | %3|1576348274.043|FAIL|rdkafka#producer-1| [thrd:0.0.0.0:9094/bootstrap]: 0.0.0.0:9094/bootstrap: Connect to ipv4#0.0.0.0:9094 failed: Connection refused (after 4704ms in state CONNECT)
tg-aggregator                  | %3|1576348274.048|ERROR|rdkafka#producer-1| [thrd:0.0.0.0:9094/bootstrap]: 0.0.0.0:9094/bootstrap: Connect to ipv4#0.0.0.0:9094 failed: Connection refused (after 4704ms in state CONNECT)
tg-aggregator                  | %3|1576348274.048|ERROR|rdkafka#producer-1| [thrd:0.0.0.0:9094/bootstrap]: 1/1 brokers are down
tg-aggregator                  | Unhandled exception. System.Net.Http.HttpRequestException: Cannot assign requested address
tg-aggregator                  |  ---> System.Net.Sockets.SocketException (99): Cannot assign requested address
tg-aggregator                  |    at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
tg-aggregator                  |    --- End of inner exception stack trace ---
tg-aggregator                  |    at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
tg-aggregator                  |    at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
tg-aggregator                  |    at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
tg-aggregator                  |    at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
tg-aggregator                  |    at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
tg-aggregator                  |    at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
tg-aggregator                  |    at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
tg-aggregator                  |    at MetricAggregator.Program.Main(String[] args) in /app/Program.cs:line 83
tg-aggregator                  |    at MetricAggregator.Program.<Main>(String[] args)

但错误仍然是一样的

该错误来自,在发送卡夫卡消息之前称为

这表明您的度量端点URL不正确,因为
localhost
将是容器本身(它正在提取度量,没有度量本身或公开HTTP接口)

这个例子看起来很有吸引力



在任何情况下,
kafka:9092
在您的上下文中都是正确的

对于编写聚合器的人来说,这个问题不会发生


我肯定会的,如果他给出了一个无效的指标端点

kafka:9092
是正确的。。。我认为你的新错误与卡夫卡无关。例如,
METRIC\u ENDPOINT
不应该使用localhost,是吗?我们也意识到了这一点。请求头似乎出了问题(RabbitMQ API具有基本身份验证)。然而,这是正确的答案。非常感谢。
KAFKA_BOOTSTRAP_SERVER: kafka:9092