亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何修復“kafka:客戶端已耗盡可與之對話的可用代理(您的集群是否可達?)”錯誤

如何修復“kafka:客戶端已耗盡可與之對話的可用代理(您的集群是否可達?)”錯誤

Go
烙印99 2023-07-04 17:30:32
我正在開發一個應用程序,它從 sqs 隊列中讀取消息,對該數據執行一些操作,然后獲取結果并發布到 kafka 主題。為了在本地進行測試,我想在我的 docker 版本中設置一個 kafka 映像。我目前可以使用 docker-compose 在本地啟動 aws-cli、localstack 和我的應用程序的容器。另外,我也可以毫無問題地啟動 kafka 和 Zookeper。我無法讓我的應用程序與 kafka 通信。我嘗試過使用兩個單獨的撰寫文件,并且還擺弄了網絡。最后,我引用了:https://rmoff.net/2018/08/02/kafka-listeners-explained/。這是我的 docker-compose 文件:version: '3.7'services:  localstack:    image: localstack/localstack:latest    container_name: localstack    env_file: .env    ports:      # Localstack endpoints for various API. Format is localhost:container      - '4563-4584:4563-4584'      - '8080:8080'    environment:      - SERVICES=sns:4575,sqs:4576      - DATA_DIR=/tmp/localstack/data    volumes:      # store data locally in 'localstack' folder      - './localstack:/tmp/localstack'    networks:      - my_network  aws:    image: mesosphere/aws-cli    container_name: aws-cli    # copy local JSON_DATA folder contents into aws-cli container's app folder    #volumes:    #  - ./JSON_DATA:/app    env_file: .env    # bash entrypoint needed for multiple commands    entrypoint: /bin/sh -c    command: >      " sleep 10;        aws --endpoint-url=http://localstack:4576 sqs create-queue --queue-name input_queue;        aws --endpoint-url=http://localstack:4575 sns create-topic --name input_topic;        aws --endpoint-url=http://localstack:4575 sns subscribe --topic-arn arn:aws:sns:us-east-2:123456789012:example_topic --protocol sqs --notification-endpoint http://localhost:4576/queue/input_queue; "    networks:      - my_network    depends_on:      - localstack  my_app:    build: .    image: my_app    container_name: my_app    env_file: .env    ports:      - '9000:9000'    networks:      - my_network    depends_on:      - localstack我希望發布到該主題時不會出現任何錯誤。相反,我得到:kafka: client has run out of available brokers to talk to (Is your cluster reachable?)有什么想法我可能做錯了嗎?感謝您的幫助。
查看完整描述

1 回答

?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

通過僅將偵聽器設置為 localhost,您已使代理只能在 Kafka 容器本身(或從主機到容器)內解析。

如果您希望另一個 Docker 服務能夠訪問該容器,則必須添加<some protocol>://kafka:<some port>廣告偵聽器中,并將其設為listeners非 localhost

協議也被添加到KAFKA_LISTENER_SECURITY_PROTOCOL_MAP

FWIW,該博客應該涵蓋所有這些基礎。


查看完整回答
反對 回復 2023-07-04
  • 1 回答
  • 0 關注
  • 235 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號