kafka消费者、生产者,Java实现

本文介绍了如何使用Java实现Kafka的消费者和生产者。通过KafkaProducerOps.java和KafkaConsumerOps.java两个类,首先运行消费者程序,随后运行生产者程序。在消费者终端,可以看到消息输出,例如:6 0 1 今天的姑娘们很美111。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:https://www.cnblogs.com/zlslch/p/5966004.html

1、KafkaProducerOps.java

//运行成功
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.Random;
public class KafkaProducerOps {
	  public static void main(String[] args) throws IOException {
	    
	        Properties props = new Properties();
			    props.put("bootstrap.servers", "192.168.0.129:9092,192.168.0.129:9093,192.168.0.129:9094");
		        props.put("serializer.class", "kafka.serializer.StringEncoder");
		        props.put("request.required.acks", "1");//16M
		        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
		        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
	        /**
	         * 两个泛型参数
	         * 第一个泛型参数:指的就是kafka中一条记录key的类型
	         * 第二个泛型参数:指的就是kafka中一条记录value的类型
	         */
	        String[] girls = new String[]{"姚慧莹", "刘向前", "周  新", "杨柳"};
	        Producer<String, String> producer = new KafkaProducer<String, String>(props);
	        String topic = "mytest";//props.getProperty(Constants.KAFKA_PRODUCER_TOPIC);
	        String key = "1";
	        String value = "今天的姑娘们很美111";
	        ProducerRecord<String, String> producerRecord =
	                new ProducerRecord<String, String>(topic, key, value);
	        producer.send(producerRecord);
	        producer.close();
	    }
}

2、KafkaConsumerOps.java

import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
import java.util.Properties;

import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
public class KafkaConsumerOps {
    public static void main(String[] args)throws IOException{
    	Properties props = new Properties();
    	    props.put("bootstrap.servers", "192.168.0.129:9092");
	        props.put("group.id", "logGroup");
	        // 自动确认设置
	        // props.put("enable.auto.commit", "true");
	        props.put("enable.auto.commit", "false");
	        props.put("auto.commit.interval.ms", "1000");
	        props.put("session.timeout.ms", "30000");
	        props.put("key.deserializer",
	                "org.apache.kafka.common.serialization.StringDeserializer");
	        props.put("value.deserializer",
	                "org.apache.kafka.common.serialization.StringDeserializer");
        Consumer<String,String> consu = new KafkaConsumer<String,String>(props);
        Collection<String> topics = Arrays.asList("mytest");
        //消费者订阅topic
        consu.subscribe(topics);
        ConsumerRecords<String,String>consumerRecords = null;
        while(true){
        	//接下来就要从topic中拉去数据
        	consumerRecords = consu.poll(1000);
        	//遍历每一条记录
        	for(ConsumerRecord<String, String> consumerRecord : consumerRecords){
        		long offset = consumerRecord.offset();
        		int partition = consumerRecord.partition();
        		Object key = consumerRecord.key();
        		Object value = consumerRecord.value();
        		System.out.println(offset+" "+partition+" "+key+" "+value);
        	}
        }
    }
}

先执行消费者程序,再执行生产者程序,在消费者终端可以看到如下的输出:

6 0 1 今天的姑娘们很美111

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值