Java使用Kafka记录

Java使用Kafka记录

1. Kafka的基本概念

Kafka是一个分布式的MQ。具备较高的吞吐量。

1.1 broker

Kafka集群包含一个或多个服务器,服务器节点成为broker。broker存储topic的数据。

1.2 Topic

写入Kafka集群的消息都有一个类别,这个类别被称为Topic。

1.3 Partition

Topic中的数据分割为一个或多个partition。每个partition中的数据使用多个切片文件存储。partition中的数据是有序的,不同partition间的数据顺序则不一致。
其中,一个Partition中,只有一个Topic;一个Topic,可以被分隔为不同的Partition。

1.4 Producer

生产者,主要是用来生产数据的,将消息发布到指定的topic。broker接收到消息之后,会将该消息追加到数据分片中。生产者可以指定存储的partition。

1.5 Consumer

消费者可以从broker读取数据,消费者可以消费多个topic中的数据。

1.6 Consumer Group

每个consumer属于一个特定的Grouper

1.7 Leader

每个partition有多个副本,其中只有一个作为Leader,是当前负责数据读写的partition

1.8 Follower

Follower跟随Leader,所有写请求都通过Leader路由。数据变更会广播给所有对的Follower,Follower与Leader保持数据同步。如果Leader失败,则从Follower中选举出一个新的Leader。

2. java 使用kafka

  1. 添加依赖
    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-clients</artifactId>
        <version>2.5.1</version>
    </dependency>
  1. 创建生产者
@Bean(value = "kafkaProducer")
public KafkaProducer<String, String> getKafkaProducer() throws IOException {
    PathMatchingResourcePatternResolver pathMatchingResourcePatternResolver = new PathMatchingResourcePatternResolver();
    Resource resource = pathMatchingResourcePatternResolver.getResource("classpath:config/kafka/kafka_producer.properties");
    InputStream inStream = resource.getInputStream();
    Properties properties = new Properties();
    properties.load(inStream);
    return new KafkaProducer<String, String>(properties);
}

  1. 写入数据
try {
        // 写入kafka
        ProducerRecord<String, String> producerRecord = new ProducerRecord<>(topicName, JSON.toJSONString(po));
        kafkaProducer.send(producerRecord);
    }catch (Exception e){
        logger.error("write kafka error!",e);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值