Java使用kafka发送和生产消息的示例

下面是使用Java发送和生产消息的示例攻略。

准备工作

  1. 安装Kafka
  2. 创建一个主题(Topic)
  3. 引入Kafka和zookeeper依赖

在pom.xml中添加以下依赖:

<dependencies>
    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-clients</artifactId>
        <version>2.5.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.4.9</version>
        <scope>test</scope>
    </dependency>
</dependencies>

生产者示例

一个生产者向Kafka发送消息的示例代码如下:

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import java.util.Properties;


public class ProducerDemo {

    public static void main(String[] args) {
        Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("acks", "all");
        props.put("retries", 0);
        props.put("batch.size", 16384);
        props.put("linger.ms", 1);
        props.put("buffer.memory", 33554432);
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

        KafkaProducer<String, String> producer = new KafkaProducer<>(props);
        for (int i = 0; i < 100; i++)
            producer.send(new ProducerRecord<>("my-topic", Integer.toString(i), Integer.toString(i)));

        producer.close();
    }

}

这个示例代码中,我们使用了Kafka的Java API来创建生产者对象,并向my-topic主题发送了一些消息。

消费者示例

一个消费者从Kafka接收消息的示例代码如下:

import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.common.serialization.StringDeserializer;
import java.time.Duration;
import java.util.Arrays;
import java.util.Properties;


public class ConsumerDemo {

    public static void main(String[] args) {
        Properties props = new Properties();
        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
        props.put(ConsumerConfig.GROUP_ID_CONFIG, "test");
        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
        props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());

        KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
        consumer.subscribe(Arrays.asList("my-topic"));

        while (true) {
            ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
            for (ConsumerRecord<String, String> record : records)
                System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
        }
    }

}

这个示例代码中,我们使用了Kafka的Java API来创建消费者对象,并订阅了my-topic主题,一旦有新的消息产生,我们就会把消息的offset、key和value输出到控制台上。

希望这个示例能够帮助你更好地理解Java如何使用Kafka发送和生产消息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java使用kafka发送和生产消息的示例 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • java如何从不规则的字符串中截取出日期

    首先我们需要了解一个基础概念:正则表达式。 正则表达式是用于匹配字符串的一种模式,可以用来判断某个字符串是否符合我们预期的格式。在Java中,可以使用Pattern和Matcher类来实现正则表达式。现在假设我们有这样一个日期字符串:2019/12/31,23:59:59,我们需要从中提取出日期部分2019/12/31,该怎么办呢? 一种解决方法是使用Pat…

    Java 2023年5月20日
    00
  • 详解Java中native关键字

    首先我们需要了解一下Java中native关键字的含义。 Native关键字 在Java中,native关键字被用来修饰一个方法,标记这个方法是用外部语言(如C或C++)实现的。通俗地说,native表示这个方法的实现不是在Java代码中,而是在外部的二进制库中。使用native可以让Java代码与外部代码(如C++)实现交互,为Java提供了更强大的功能。…

    Java 2023年5月26日
    00
  • java导出dbf文件生僻汉字处理方式

    下面是java导出dbf文件生僻汉字处理方式的完整攻略。 总体思路 在java中,如果需要导出dbf文件中含有生僻汉字,需要进行字符集的转换,防止乱码。具体步骤如下: 将生僻汉字以GBK编码存储到List或数组中。 将List或数组中的每个字符转换成Unicode编码,并转换成16进制格式的字符串,存储到新的List或数组中。 使用Apache POI相关类…

    Java 2023年5月26日
    00
  • Java-String类最全汇总(上篇)

    我来详细讲解一下“Java-String类最全汇总(上篇)”这篇文章的完整攻略。 首先,这篇文章主要介绍了Java中的String类及其相关知识点,包括字符串的创建、字符串常用方法、字符串比较、字符串格式化等内容。 在文章中,对于字符串的创建部分,作者详细介绍了使用字符串字面值、构造函数、字符串缓冲区等方式创建字符串的方法和使用场景,并且给出了示例说明。例如…

    Java 2023年5月26日
    00
  • bootstrap自定义样式之bootstrap实现侧边导航栏功能

    下面是关于“bootstrap自定义样式之bootstrap实现侧边导航栏功能”的完整攻略: 什么是Bootstrap? Bootstrap是一种流行的CSS框架,可帮助开发人员快速创建响应式网站。它提供了大量的CSS和JavaScript组件,可以轻松添加到你的网站上。它不仅可以帮助节省开发时间,还可以提高网站的可访问性和易用性。 Bootstrap如何实…

    Java 2023年5月30日
    00
  • Java实现ModbusTCP通信功能

    让我来详细讲解Java实现ModbusTCP通信功能的攻略。 简介 Modbus是一种通信协议,用于市场上常见的工业控制系统。这种协议使用Modbus通信协议功能码来读写数据,通常采用RS-485或RS-232串行通信。而Modbus TCP是Modbus协议的一种,它使用TCP/IP网络来实现通信。 如果你想在Java中实现ModbusTCP通信功能,你需…

    Java 2023年5月19日
    00
  • Java面向对象选择题总结归纳

    Java面向对象选择题总结归纳 1. 答题技巧 在 Java 面向对象的选择题中,需要重点关注四个方面: 继承 多态 接口 抽象类 在做选择题时,需要结合这四个方面来推断代码的输出结果,而且需要结合实际情况进行分析,不能片面理解。 2. 继承 Java 中可以通过继承实现类的复用。在做选择题时,需要注意以下几点: 子类继承了父类的所有方法和属性,但是并不会继…

    Java 2023年5月26日
    00
  • Java读取一行空格隔开的数字字符串并求出这些数字的和方法

    要读取一行空格隔开的数字字符串,并求出这些数字的和,可以按照以下步骤进行: 1. 读取字符串 首先,需要获取用户输入的字符串。可以使用Scanner类来读取用户输入: Scanner scanner = new Scanner(System.in); // 创建Scanner对象 String numsStr = scanner.nextLine(); //…

    Java 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部