小编sha*_*oes的帖子

docker-compose 中的 Kafka Streams 需要很长时间进行分区分配

我正在 Docker 容器中运行 Kafka 流应用程序。出于测试目的,我有一个 docker-compose 文件,用于运行流应用程序、kafka 的单个实例和 Zookeeper。kafka和zookeeper的配置之前都工作过。

为 kafka 流应用程序分配分区需要花费 5 分钟以上的时间。如果我延迟运行流容器,直到 kafka 和 Zookeeper 启动,并且流应用程序正在使用的主题已正确实例化,那么它几乎立即获得分配的分区。

看起来 kafka 流组正在被实例化,但是,应用程序没有被分配任何分区。这大概是因为该主题尚未完全实例化。直到下一代才会分配分区,这似乎几乎需要 5 分钟。

根据我对情况的(有限)了解,我有几种减少这种延迟的选择:

  • 在启动流应用程序之前检查主题是否具有元数据
  • 减少世代之间的间隔(似乎这在生产中可能会出现问题,但对于测试来说可能没问题)

然而,我意识到考虑到我在这方面的知识有限,我可能会遗漏一些明显的东西。

编辑:docker-compose 文件以供参考

version: 3.3
services:
    kafka-stream-ingestor:
      build:
        context: .
        dockerfile: Dockerfile
        args:
          - version

      networks:
        - services

    zookeeper:
        image: wurstmeister/zookeeper
        ports:
          - 2181:2181
        networks:
          - services

    kafka:
      image: wurstmeister/kafka:latest
      ports:
        - 9094:9094
        - 9092:9092
      environment:
        KAFKA_ADVERTISED_HOST_NAME: ${DOCKER_KAFKA_HOST}
        KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
        KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
        KAFKA_ADVERTISED_PROTOCOL_NAME: OUTSIDE
        KAFKA_ADVERTISED_PORT: 9094
        KAFKA_CREATE_TOPICS: "kafka-queue:12:1"
        KAFKA_PROTOCOL_NAME: INSIDE
        KAFKA_PORT: 9092
      volumes:
        - …
Run Code Online (Sandbox Code Playgroud)

apache-kafka docker docker-compose apache-kafka-streams

5
推荐指数
1
解决办法
1799
查看次数

嵌套java循环的范围问题

我正在学习处理(对于那些不知道它是基于java语言的视觉艺术的人),我遇到了嵌套for循环的奇怪问题.这是一个简单的程序(应该)生成随机数量的点,并将它们全部连接起来.

size(1280, 1050);
background(227, 199, 147);
smooth();
stroke(255);
strokeWeight(2);

int points = int(random(30)) + 2;
int[][] Points  = new int[points][2];

for (int i = 0; i < points; i++)
 {
       Points[i][0] = int(random(1280));
   Points[i][1] = int(random(1050));
 }

for (int i = 0; i + 1 < points; i++)
{
  for (int L = i+1; L < points; L++);
  {
    line(Points[i][0], Points[i][1], Points[L][0], Points[L][1]);
  }
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到一个错误,说"找不到任何名为L的东西",这对我来说似乎很疯狂.有任何想法吗?

java processing scope for-loop nested

3
推荐指数
1
解决办法
611
查看次数