Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用jhipster在Kafka集群上设置多个代理_Java_Apache Kafka_Jhipster - Fatal编程技术网

Java 如何使用jhipster在Kafka集群上设置多个代理

Java 如何使用jhipster在Kafka集群上设置多个代理,java,apache-kafka,jhipster,Java,Apache Kafka,Jhipster,我用jhipster创建了一个基本应用程序,并添加了ApacheKafka。即使使用另一个解决方案(从我的应用程序到用于kafka的php客户端),我也可以生产和消费。 现在,我想在集群上创建多个代理,但不是从java创建.sh文件 我知道集群是使用server.properties文件设置的,其中包含代理id、日志目录和其他内容。但是在我的jhipster应用程序中,代理id是在kafka.yml中声明的,所以我想我必须编辑.yml文件来声明另一个代理 version: '2' service

我用jhipster创建了一个基本应用程序,并添加了ApacheKafka。即使使用另一个解决方案(从我的应用程序到用于kafka的php客户端),我也可以生产和消费。 现在,我想在集群上创建多个代理,但不是从java创建.sh文件

我知道集群是使用server.properties文件设置的,其中包含代理id、日志目录和其他内容。但是在我的jhipster应用程序中,代理id是在kafka.yml中声明的,所以我想我必须编辑.yml文件来声明另一个代理

version: '2'
services:
  zookeeper:
    image: confluentinc/cp-zookeeper:5.2.1
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
      ZOOKEEPER_SYNC_LIMIT: 2
    ports:
      - 2181:2181
  kafka:
    image: confluentinc/cp-kafka:5.2.1
    environment:
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_BROKER_ID: 2
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
    ports:
      - 9092:9092
目标是使用kafka创建一个jhipster应用程序,在集群中创建多个代理,而不是一个。因此,我将有多个主题。
我没有任何结果

您可以通过在docker-compose.yml文件中添加更多代理,在/cp kafka中创建多个代理

version: '2'
services:
   zookeeper:
    image: confluentinc/cp-zookeeper:5.2.1
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
      ZOOKEEPER_SYNC_LIMIT: 2
    ports:
      - 2181:2181
  kafka-1:
    image: confluentinc/cp-kafka:latest
    hostname: kafka-1
    ports:
      - "19092:19092"
    depends_on:
      - zookeeper
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-1:19092

  kafka-2:
    image: confluentinc/cp-kafka:latest
    hostname: kafka-2
    ports:
      - "29092:29092"
    depends_on:
       - zookeeper
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-2:29092

  kafka-3:
    image: confluentinc/cp-kafka:latest
    hostname: kafka-3
    ports:
      - "39092:39092"
    depends_on:
       - zookeeper
    environment:
      KAFKA_BROKER_ID: 3
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-3:39092
参考:

“因此我会有多个主题”==>不确定是否理解,但您不需要多个代理来处理多个主题,您可以只由一个代理处理多个主题

我真的不知道jhipster,但看起来你的yml文件和docker compose文件完全一样,所以我会给你我的2美分,就好像它是由docker compose启动的一样

您首先需要您的代理连接到同一个zookeeper集群,从我看到的情况来看应该没问题(如果您在同一docker compose yml文件中声明所有代理)

您需要使用客户端将访问的IP地址设置播发的侦听器,如果您使用localhost,它们将无法连接到您的代理:

KAFKA_播发的听众:明文://localhost:9092

应该是这样的:

卡夫卡的听众:明文://EXPOSEDIPADDRESS:9092

您还可以添加侦听器,如: 卡夫卡大学的听众:纯文本://0.0.0.0:9092

确保为每个代理使用不同的代理ID,并为每个代理使用不同的端口(如果它们在docker后面的同一个框中运行)


Yannick

通过这个
docker compose.yml
可以得到一个包含三个代理的集群。代理可以从docker内部访问,如
kafka1:9092、kafka2:9092、kafka3:9092
,也可以从docker主机访问,如
localhost:19092、localhost:29092、localhost:39092

version: "3.7"
services:
  zookeeper:
    image: confluentinc/cp-zookeeper:5.4.0
    hostname: zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000

  kafka1:
    image: confluentinc/cp-server:5.4.0
    hostname: kafka1
    container_name: kafka1
    depends_on:
      - zookeeper
    ports:
      - "19092:19092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP:PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka1:9092,PLAINTEXT_HOST://localhost:19092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_CONFLUENT_LICENSE_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'

  kafka2:
    image: confluentinc/cp-server:5.4.0
    hostname: kafka2
    container_name: kafka2
    depends_on:
      - zookeeper
    ports:
      - "29092:29092"
    environment:
      KAFKA_BROKER_ID: 102
      KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka2:9092,PLAINTEXT_HOST://localhost:29092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_CONFLUENT_LICENSE_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'

  kafka3:
    image: confluentinc/cp-server:5.4.0
    hostname: kafka3
    container_name: kafka3
    depends_on:
      - zookeeper
    ports:
      - "39092:39092"
    environment:
      KAFKA_BROKER_ID: 3
      KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka3:9092,PLAINTEXT_HOST://localhost:39092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_CONFLUENT_LICENSE_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'

所以我试着用你的yml和博客上的那个。首先我想知道他为什么要启动3 zookeeper服务器。我还有一个错误:[Consumer clientId=Consumer-1,groupId=group_id]无法建立到节点-1的连接。经纪人可能不在。控制台会打印一段时间。问题来自端口。它只接受9092。如果我使用9093或19092,则它不起作用。使用此配置,只能从docker composeIn创建的网络中的docker主机访问kafka代理。在这种情况下,生产者应连接到哪个kafka代理实例?@kamal您以kafka1:19092、kafka2:29092、kafka3:39092的身份连接到所有代理