首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >快速启动卡夫卡消费者无法连接到卡夫卡容器

快速启动卡夫卡消费者无法连接到卡夫卡容器
EN

Stack Overflow用户
提问于 2019-11-16 21:45:53
回答 2查看 1.4K关注 0票数 0

我正在尝试部署两个Spring引导应用程序(卡夫卡生产者和消费者)。当我将生产者部署到坞时,一切正常,但是当我部署时,我的使用者就不能工作了,因为它与kafka容器没有连接。

日志显示了这个错误

代码语言:javascript
运行
AI代码解释
复制
2019-11-17 05:32:22.644  WARN 1 --- [main] o.a.k.c.NetworkClient: [Consumer clientId=consumer-1, groupId=exampleGroup] Connection to node -1 could not be established. Broker may not be available.

我的船坞-合成人

代码语言:javascript
运行
AI代码解释
复制
version: '3'

services:

  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    restart: always
    ports:
      - 2181:2181

  kafka:
    image: wurstmeister/kafka
    container_name: kafka
    restart: always
    ports:
      - 9092:9092
    depends_on:
      - zookeeper
    links:
      - zookeeper:zookeeper
    environment:
      KAFKA_ADVERTISED_HOST_NAME: localhost
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_CREATE_TOPICS: "topic1:1:1"

在我的KafkaConfig课上:

代码语言:javascript
运行
AI代码解释
复制
@EnableKafka
@Configuration
public class KafkaConfig {

    @Bean
    public ConsumerFactory<String, String> consumerFactory(){
        Map<String, Object> config = new HashMap<>();

        config.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, KafkaConstants.KAFKA_BROKERS);
        config.put(ConsumerConfig.GROUP_ID_CONFIG, "exampleGroup");
        config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
        config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
      //  config.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, KafkaConstants.ENABLE_AUTO_COMMIT_CONFIG);
        config.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, KafkaConstants.OFFSET_RESET_EARLIER);
       // config.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, KafkaConstants.SESSION_TIMEOUT_MS);

        return new DefaultKafkaConsumerFactory<>(config);
    }

和常量类

代码语言:javascript
运行
AI代码解释
复制
public class KafkaConstants {

    public static String KAFKA_BROKERS = "localhost:9092";
    public static Integer MESSAGE_COUNT=1000;
    public static String TOPIC_NAME="demo";
    public static String GROUP_ID_CONFIG="exampleGroup";
    public static Integer MAX_NO_MESSAGE_FOUND_COUNT=100;
    public static String OFFSET_RESET_LATEST="latest";
    public static String OFFSET_RESET_EARLIER="earliest";
    public static Integer MAX_POLL_RECORDS=1;
    public static Integer SESSION_TIMEOUT_MS = 180000;
    public static Integer REQUEST_TIMEOUT_MS_CONFIG = 181000;
    public static String ENABLE_AUTO_COMMIT_CONFIG = "false";
    public static Integer AUTO_COMMIT_INTERVAL_MS_CONFIG = 8000;
}

当我在电脑上安装zookepper和kafka并使用intellij运行这两个春季引导应用程序时,效果很好。问题是当我部署到我的本地码头时。

你能帮帮我吗?

更新

更新我的对接者-撰写:

代码语言:javascript
运行
AI代码解释
复制
version: '3'

services:

  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    restart: always
    ports:
      - 2181:2181

  kafka:
    image: wurstmeister/kafka
    container_name: kafka
    restart: always
    ports:
      - 9092:9092
    depends_on:
      - zookeeper
    links:
      - zookeeper:zookeeper
    environment:
      KAFKA_ADVERTISED_HOST_NAME: kafka
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_CREATE_TOPICS: "ACC_GROUP_CREATE:1:1"

  consumer:
    image: micro1
    container_name: micro1
    depends_on:
      - kafka
    restart: always
    ports:
      - 8088:8088
    depends_on:
      - kafka
    links:
      - kafka:kafka

  producer:
    image: micro2
    container_name: micro2
    depends_on:
      - kafka
    restart: always
    ports:
      - 8087:8087
    depends_on:
      - kafka
    links:
      - kafka:kafka

工作得很好!基于@hqt的反应,但我不知道为什么要添加这些行的消费者/生产者

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-17 12:41:18

这个问题是由于KAFKA_ADVERTISED_HOST_NAME属性造成的。这是文档,它解释了为什么卡夫卡需要广告地址。

关键是,当您运行一个客户端时,您传递给它的代理就是从集群中获取有关代理的元数据的地方。它将连接到的用于读取/写入数据的实际主机& IP是基于代理在初始连接中传回的数据的--即使它只是一个节点,并且返回的代理与连接到的节点相同。

KAFKA_ADVERTISED_HOST_NAME设置为localhost时:

  • 您的应用程序运行在"Intellij“上,这意味着运行在主机环境上。这个主机创建了Kafka的容器,因此从localhost:9092的访问将指向Kafka的容器。
  • 当应用程序在容器内运行时,localhost:9092表示容器本身。所以这是毫无意义的。(这个容器甚至没有在9092港口监听的任何进程)

在容器环境中运行web应用程序时,将KAFKA_ADVERTISED_HOST_NAME属性更新为kafka将有效。请注意,您的网络应用程序和卡夫卡容器必须在同一个码头的网络。

下面是使用Wurstmeister的图像来运行Kafka集群的拟议的停靠组合。

代码语言:javascript
运行
AI代码解释
复制
version: "2"
services:
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
      - 2181:2181

  kafka:
    image: wurstmeister/kafka
    container_name: kafka
    ports:
      - 9092:9092
    depends_on:
      - zookeeper
    environment:
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_HOST_NAME: kafka
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_CREATE_TOPICS: "topic1:1:1"

   web_app:
    # your definition of the web_app goes  here

然后,您可以连接到容器环境中地址kafka:9092上的Kafka代理。

票数 1
EN

Stack Overflow用户

发布于 2019-11-17 13:54:55

这是一个常见的问题,您需要阅读和理解的权威文档是https://www.confluent.io/blog/kafka-listeners-explained

我正在复制它的tl;dr:供参考:

您需要将advertised.listeners (如果使用Docker >映像)设置为外部地址(主机/IP),以便客户端>能够正确地连接到它。否则,他们将尝试连接>到内部主机地址--如果无法到达,则会出现问题。“

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

https://stackoverflow.com/questions/58897876

复制
相关文章
JavaScript 基于HTML5 canvas 获取文本占用的像素宽度
基于HTML5 canvas 获取文本占用的像素宽度 直接上代码 // 获取单行文本的像素宽度 getTextPixelWith(text, fontStyle) { var canvas = document.createElement("canvas"); // 创建 canvas 画布 var context = canvas.getContext("2d"); // 获取 canvas 绘图上下文环境 context.font = fontStyle; // 设置字体样式,使用前设置好对应的 fo
授客
2019/12/12
2K0
ICCV2019 | 任意形状文本检测的像素聚合网络
本文简要介绍了2019年7月被ICCV录用的论文“Efficient and AccurateArbitrary-Shaped Text Detection with Pixel Aggregation Network”的主要工作。该论文主要解决了自然场景文本检测中的两个问题:一是如何权衡在自然场景任意形状文本检测的速度与精度,二是不规则文本的精准检测。
AI科技评论
2019/10/10
1.3K0
ICCV2019 | 任意形状文本检测的像素聚合网络
比例尺与层级的转换
Freedom123
2024/03/29
1400
【D3.js - v5.x】(2)绘图 | 比例尺 | 坐标轴 | 柱状图 | 过渡
SVG,指可缩放矢量图形(Scalable Vector Graphics),是用于描述二维矢量图形的一种图形格式,是由万维网联盟制定的开放标准。 SVG 使用 XML 格式来定义图形,除了 IE8 之前的版本外,绝大部分浏览器都支持 SVG,可将 SVG 文本直接嵌入 HTML 中显示。
前端修罗场
2023/10/07
8230
【D3.js - v5.x】(2)绘图 | 比例尺 | 坐标轴 | 柱状图 | 过渡
webgis中的比例尺实现
比例尺在地图中是一个非常重要的概念,有着辅助读图的作用。本文在ol框架下,实现webgis中的比例尺功能。
牛老师讲GIS
2021/12/06
6780
webgis中的比例尺实现
航摄比例尺、成图比例尺、地面分辨率与航摄设计用图比例尺
根据武汉大学《摄影测量学》中的定义:航摄比例尺是航摄影像上一线段l与相应地面线段L的水平距离之比:
charlee44
2020/07/21
4.3K0
航摄比例尺、成图比例尺、地面分辨率与航摄设计用图比例尺
最大宽度最小宽度
    css3又加入了min-width,min-height,max-with,max-height等属性
十月梦想
2018/08/29
3.1K0
为什么真空中光速是恒定的?
我们想一想几何的起源是什么?例如,为什么直线是直线?因为光线的传播是直的,人用眼睛来看世界,来感知几何的概念,所以直线是直的。
一个会写诗的程序员
2020/10/28
1.2K0
为什么真空中光速是恒定的?
数据可视化工具d3_前端3d可视化
近年来,可视化越来越流行,许多报刊杂志、门户网站、新闻媒体都大量使用可视化技术,使得复杂的数据和文字变得十分容易理解,有一句谚语“一张图片价值于一千个字”。D3 正是数据可视化工具中的佼佼者,基于 JavaScript 开发,项目托管于 GitHub。从 D3诞生以来,不断受到好评,在 GitHub 上的项目仓库排行榜也不断上升。可视化越来越流行,许多报刊杂志、门户网站、新闻、媒体都大量使用可视化技术,使得复杂的数据和文字变得十分容易理解,有一句谚语“一张图片价值于一千个字”,的确是名副其实。各种数据可视化工具也如井喷式地发展,D3 正是其中的佼佼者。D3 的全称是(Data-Driven Documents),顾名思义可以知道是一个被数据驱动的文档。听名字有点抽象,说简单一点,其实就是一个 JavaScript 的函数库,主要是用来做数据可视化。
全栈程序员站长
2022/11/10
12.9K0
数据可视化工具d3_前端3d可视化
(数据科学学习手札41)folium基础内容介绍
  folium是js上著名的地理信息可视化库leaflet.js为Python提供的接口,通过它,我们可以通过在Python端编写代码操纵数据,来调用leaflet的相关功能,基于内建的osm或自行获取的osm资源和地图原件进行地理信息内容的可视化,以及制作优美的可交互地图。其语法格式类似ggplot2,是通过不断添加图层元素来定义一个Map对象,最后以几种方式将Map对象展现出来。
Feffery
2018/07/10
6K0
像素相关概念:PPI、DPI、设备像素、独立像素
感觉在微信上效果不好,去个人站点看 www.taoweng.site 前言 我相信对于像素,英文「pixel」,缩写「px」,这个概念并不陌生吧,不管是设计师设计图片用的单位 px,还是前端工程师在 css 里面的单位 px等等,很多领域都会用到这个单位,但是当我问他们一些问题的时候,基本上都答得不好。 比如: iPhone 6 的分辨率是 750 x 1334 像素,然而我们我们在写 css 的时候是以 375 x 667 来调的; 为什么我们做的一个网页在 pc 端可以正常显示,在移动端也可以正常显示,
桃翁
2018/06/27
2.8K0
【D3使用教程】(3) 添加比例尺
一般而言,任意数据集中的值不可能刚好与图表中的像素尺度一一对应。而D3中,比例尺要做的就是将数据值映射为可视图形中的可替代值得手段。
前端修罗场
2023/10/07
3580
【D3使用教程】(3) 添加比例尺
分页居中-圆角宽度自适应宽度(经典)
找到的作的不错,可错就是ie中“下一页”、“下一页”行高没有处理好! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/ht
deepcc
2018/05/16
2.6K0
Excel 检查间隔恒定的时间点是否有缺失
在 Excel 中有一列日期时间数据,按小时顺序记录了一些时间点,但是这个记录是不完整的。其中有些时间点会被重复记录,如下图的 2020/1/6 1:00。而另一些时间点则可能缺失,比如 2020/1/6 4:00,部分数据截图如下:
朱迪
2024/04/26
2080
一款完整的单节锂离子电池采用恒定电流/恒定电压线性充电器
TX5806是一款完整的单节锂离子电池采用恒定电流/恒定电压线性充电器。芯片外部元件少,使芯片成为便携式应用的理想选择。芯片可以适合 USB 电源和适配器电源工作。由于采用了内部P-MOS架构,加上防倒充电路,所以不需要外部隔离二极管。热反馈可对充电电流进行自动调节,以便在大功率操作或高环境温度
芯动大师
2024/01/09
2380
一款完整的单节锂离子电池采用恒定电流/恒定电压线性充电器
获取隐藏元素的宽度
如果DOM元素的fu’yu是被隐藏的(display: none),那么无论使用DOM的接口,还是jquery的接口来获取该元素的宽度,得到的结果始终是0. 例如:
宅蓝三木
2024/10/09
2240
CSS侧边栏宽度不动(更改页面宽度时),内容区宽度自适应
一个页面,左栏是内容栏content,右栏是侧边栏sidebar。如何使侧边栏宽度不动(更改页面宽度时),内容区宽度自适应呢?为了保证内容区宽度自适应,先不设定其宽度,使其填充整个DIV区域,设定足够大小的右外边距,左浮动。侧边栏使用负margin,设置一定的负值左外边距,使其浮动到实现设定好的空白右外边距的地方。 <style> div#wrapper { margin:15px 0; overflow:auto; } div#content { float:left; margin-right:465p
欢醉
2018/01/22
3.6K0
qtabbar设置不同宽度_华为最小宽度默认
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/09
2.9K0
qtabbar设置不同宽度_华为最小宽度默认
设备像素和CSS像素
例如: iPhone3G / iPhone3GS 3.5英寸 / 逻辑像素 320 480 / 设备像素 320 480:
程序员 NEO
2023/09/28
2150
设备像素和CSS像素
数据宽度
数据宽度与上一个笔记的进制有很大关系。计算机不能无视大小存储一个数据,他需要一个容器来存放这些二进制数据 容器都是有大小的,超出这个容器计算机会舍弃这个二进制数的高位,进制篇说过,二进制数运算原理是转换成补码然后参与运算,同理。 假设一个容器有四位,这里只是假设,计算机最基本单位是byte 8位
用户7272142
2023/04/12
1.5K0
数据宽度

相似问题

将笛卡尔像素转换为极坐标像素

20

获得任意形状组合的轮廓

10

任意闭区域着色

20

计算覆盖像素差的矩形集?

10

GLSL中的多光像素阴影

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档