我正在 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) 我正在学习处理(对于那些不知道它是基于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的东西",这对我来说似乎很疯狂.有任何想法吗?