kafka生产者与多线程消费者(配置多个topic)demo

这篇博客演示了如何在Java中创建Kafka的生产者来发送消息,并配置多线程消费者来消费来自多个Topic的数据。通过ConsumerTask实现了Runnable接口,确保了消费者在不同线程中的有效运行。
摘要由CSDN通过智能技术生成

kafka生产者与多线程消费者(配置多个topic)demo

producer生产者代码

package com.cg.kafka;

import java.util.Properties;

import org.apache.kafka.clients.producer.Callback;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata;
import org.apache.kafka.common.serialization.StringSerializer;

//关于分区的问题:在创建topic主题时指定partition分区的数量。
//然后在kafka会自动去均衡同一个组的多个消费者从不同的partition分区去消费,消费者程序中只需要指定消费者所属的group组。
public class ProducerTherd {
   

	private static final String TOPIC = "test";//test或者test1
	private static final String BROKER_LIST = "192.168.80.132:9092"; //kafka集群配置        "192.168.80.132:9092,192.168.80.133:9092,192.168.80.134:9092";
	private static KafkaProducer<String,String> producer = null;
	
	static{
   
		Properties configs = initConfig();
		producer = new KafkaProducer<String,String>(configs);
	}
	
	private static Properties initConfig() {
   
		//step1 配置参数,这些跟优化kafka性能有关系
		Properties properties = new Properties();
		//1 连接broker
		properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, BROKER_LIST);
		//3 acks
        // -1 代表所有处于isr列表中的follower partition都会同步写入消息成功
        // 0 代表消息只要发送出去就行,其他不管
        // 1 代表发送消息到leader partition写入成功就可以
		properties.put(ProducerConfig.ACKS_CONFIG, "-1");
		//4 重试次数
		properties.put(ProducerConfig.RETRIES_CONFIG, 5);//大部分问题,设置这个就可以解决,生产环境可以设置多些 5-10次
		//5 隔多久重试一次
		properties.put(ProducerConfig.RETRY_BACKOFF_MS_CONFIG, 2000);
		//6 如果要提升kafka的吞吐量,可以指定压缩类型,如lz4
		properties.put(Pro
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值