如何从Java Api产生消息。卡夫卡

时间:2019-07-27 06:57:31

标签: apache-kafka

我正在使用Kafka和Java Api进行首次测试

下面我详细说明了我要遵循的步骤,这对我来说是一个新世界,我不知道我是否错过了一步,但我不这样做。

我认为的第一件事是一个动物园管理员和一个带有码头工人的卡夫卡,我输入卡夫卡并执行命令,这是正确的

// docker-compose.yml

version: "3.6"
services:
zk-svc:
 image: wurstmeister/zookeeper
 ports:
  - "2181:2181"
 restart: always
kafka-svc:
 image: wurstmeister/kafka
 depends_on:
  - zk-svc
 ports:
  - "9092:9092"
 restart: always

 environment:
  KAFKA_ADVERTISED_HOST_NAME: 192.168.1.147
  KAFKA_ZOOKEEPER_CONNECT: zk-svc:2181

我创建了一个名为“测试”的主题

//创建主题

bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test

我看着容器的IP地址

//获取IP容器

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' kafka-zk_zk-svc_1

最后,我将主题和容器ip的数据应用于产生消息的java类中

// JAVA CLASS

public class Producers {
public static String brokerList = "172.21.0.3:9092";
public static String topic = "test";

public static void main(String[] args) throws InterruptedException, ExecutionException {
    Properties props = new Properties();
    props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, brokerList);
    props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
    props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
    props.put(ProducerConfig.PARTITIONER_CLASS_CONFIG, "com.kafka.api.producer.SimplePartitioner");

    Producer<String, String> producer = new KafkaProducer<>(props);

    for (int id = 0; id < 5000; id++) {
        String key = String.format("key[%d]", id);
        String message = String.format("message[%d]", id);
        System.out.println("Sending message with: " + key);
        producer.send(new ProducerRecord<>(topic, key, message));
        Thread.sleep(1000);
    }

    producer.flush();
    producer.close();
}
}

根据Java控制台,他似乎发送得很好:

// Java控制台

Sending message with: key[0]
Sending message with: key[1]
Sending message with: key[2]
...

我创建了一个消费者:

//创建消费者

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

在消费者中什么都没有给我。我不知道我在做什么错。 是否有人看到任何步骤错误或我错过了一步?

0 个答案:

没有答案