kafka应用

kafka搭建及应用 kafka企业级消息系统 1、了解为什么要使用消息系统 在没有使用消息系统以前,我们传统对于多业务、夸服务消息传递的时候,会采用串行方式或者并行方法; 串行方式: 用户注册实例:将注册信息写入数据库成功后,发送注册邮件,在发送注册短信。 并行方式: 将注册信息写入数据库成功后,发送注册邮件的同事,发送注册短信。以上三个任务完成之后,发挥给客户端,与串行的差别是并行的方式... 阅读详情

kafka简单应用:

生产者:

package com.learn.kafka.autocommit;

import lombok.extern.slf4j.Slf4j;
import org.apache.kafka.clients.producer.*;
import org.apache.kafka.common.serialization.IntegerSerializer;
import org.apache.kafka.common.serialization.StringSerializer;

import java.util.Properties;
import java.util.concurrent.TimeUnit;

@Slf4j
public class ProducerKafka extends Thread {
    Producer<Integer, String> producer;
    String topic;
    public ProducerKafka(String topic) {
        Properties properties = new Properties();
        properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "192.168.40.137:9092,192.168.40.138:9092,192.168.40.139:9092");
        properties.put(ProducerConfig.CLIENT_ID_CONFIG, "learn-producer");
        //异步发送涉及到的两个配置
        /**
         *producer(生产者)缓存每个分区未发送的消息。缓存的大小是通过 batch.size 配置指定的。
         *值较大的话将会产生更大的批。并需要更多的内存(因为每个“活跃”的分区都有1个缓冲区)。
         * 默认缓冲可立即发送,即便缓冲空间还没有满,但是,如果你想减少请求的数量,可以设置linger.ms大于0。
         * 这将指示生产者发送请求之前等待一段时间,希望更多的消息填补到未满的批中。
         * 这类似于TCP的算法,
         * 例如上面的代码段,可能100条消息在一个请求发送,
         * 因为我们设置了linger(逗留)时间为1毫秒,然后,如果我们没有填满缓冲区,
         * 这个设置将增加1毫秒的延迟请求以等待更多的消息。
         * 需要注意的是,在高负载下,相近的时间一般也会组成批,即使是linger.ms=0。
         * 在不处于高负载的情况下,如果设置比0大,以少量的延迟代价换取更少的,更有效的请求。
         */
        properties.put(ProducerConfig.BATCH_SIZE_CONFIG, 16384);
        properties.put(ProducerConfig.LINGER_MS_CONFIG, 1);

        properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, IntegerSerializer.class);
        properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        producer = new KafkaProducer<>(properties);
        this.topic = topic;
    }

    @Override
    public void run() {
        int num = 0;
        log.info("start");
        while (num < 20) {
            try {
                String msg = "learn kafka msg" + num;
                //get会拿到发送的结果,同步发送
//                RecordMetadata recordMetadata = producer.send(new ProducerRecord<>(topic, msg)).get();
                //log.info("recordMetadata offset:{}, partition:{}, topic:{}", recordMetadata.offset(), recordMetadata.partition(), recordMetadata.topic());
                producer.send(new ProducerRecord<>(topic, msg), (recordMetadata, e) -> {
                    log.info("recordMetadata offset:{}, partition:{}, topic:{}", recordMetadata.offset(), recordMetadata.partition(), recordMetadata.topic());
                });

                TimeUnit.SECONDS.sleep(2);
                ++num;
            } catch (InterruptedException e) {
                log.error("InterruptedException:{}", e.getMessage());
            }
        }
    }

    public static void main(String[] args) {
        new ProducerKafka("learn").start();
    }
}

消费者:

package com.learn.kafka.autocommit;

import lombok.extern.slf4j.Slf4j;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.common.serialization.IntegerDeserializer;
import org.apache.kafka.common.serialization.StringDeserializer;

import java.time.Duration;
import java.util.Collections;
import java.util.Properties;

@Slf4j
public class ConsumerKafka extends Thread {
    KafkaConsumer<Integer, String> kafkaConsumer;
    String topic;
    public ConsumerKafka(String topic) {
        Properties properties = new Properties();
        properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "192.168.40.137:9092,192.168.40.138:9092,192.168.40.139:9092");
        properties.put(ConsumerConfig.CLIENT_ID_CONFIG, "learn-consumer");
        properties.put(ConsumerConfig.GROUP_ID_CONFIG, "group1");
        properties.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, "6000");

        //自动提交(批量确认)
        properties.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, "1000 ");

        properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, IntegerDeserializer.class);
        properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
        //这个属性,它能够消费最早的数据(对于一个新的group来说)
        properties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
        kafkaConsumer = new KafkaConsumer<>(properties);
        this.topic = topic;
    }

    @Override
    public void run() {
        kafkaConsumer.subscribe(Collections.singleton(topic));
        while (true) {
            ConsumerRecords<Integer, String> consumerRecords = kafkaConsumer.poll(Duration.ofSeconds(1));
            consumerRecords.forEach(record -> {
                log.info("key:{}, value:{}, partition:{}, offset:{}", record.key(), record.value(), record.partition(),  record.offset());
            });
        }
    }

    public static void main(String[] args) {
        new ConsumerKafka("learn").start();
    }
}

 

Kafka入门及实战应用指南 Apache Kafka是由LinkedIn开发的高吞吐量分布式消息系统,用于解决传统消息队列在高并发场景下的性能瓶颈。其核心组件包括Producer、Consumer、Broker、Topic和Partition,通过水平扩展、多副本机制和持久化存储实现高可用性。Kafka具备缓冲解耦、异步通信、数据冗余等优势,广泛应用于实时流处理、日志收集和消息队列等场景。Zookeeper作为分布式协调服务,为Kafka提供集群管理、元数据存储等功能。安装Kafka需配置Java环境和Zookeeper,Spring 阅读详情

相关推荐

深入了解 Kafka:应用场景、架构和GO代码示例

在这篇博客中,我们将介绍 Kafka 的主要应用场景、架构及主要组件,并展示如何使用 Go 语言操作 Kafka,包括 Kafka 生产者、消费者等的示例代码,以及如何通过 Kafka Connect REST API 配置连接器。

spiker_的博客 2195

kafka的producer发送的过程

kafka的producer 分为同步发送和异步发送,具体可以看下面例子 kafka-trunk\kafka-trunk\examples\src\main\java\kafka\examples\Producer.java 具体源码如下: public class Producer extends Thread { private final KafkaProducer&lt;Inte...

jason的笔记 4353

Kafka在金融科技领域的应用

Kafka在金融科技领域的应用 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 1. 背景介绍 1.1 问题的由来 随着金融科技的快速发展,金融机构面临着日益复杂的数

AI天才研究院 1395

kafka生产者方式、回调函数、指定分区、消费方式指定分区、偏移量提交、多线程,消费失败重试补偿

一、 kafka发送消息的三种方式 public class MyProducer implements Job { private static KafkaProducer<String,String> producer; static { Properties properties = new Properties(); ...

. 6069

【Nature Communications】超高介电常数材料 Hf0.5Zr0.5O2(HZO)

复旦大学AnQuanJiang团队在《NatureCommunications》发表研究,通过原子层沉积技术制备Hf0.5Zr0.5O2(HZO)薄膜电容器,结合等离子体处理获得突破性性能:介电常数达921,储能密度584J/cm³,效率近100%。研究揭示了铁电性消失后氧空位有序排列产生超高介电常数的机制,并通过同步辐射衍射和STEM分析证实了微观结构转变。该材料在85-300K温度范围内保持稳定,经1万亿次循环后仍能维持100μC/cm²电荷密度,为高密度DRAM和CMOS器件集成提供了新方案。

荷塘阅色 2457

gtsam 学习十(ISAM2 理论)

翻译自:iSAM2: Incremental Smoothing and Mapping Using the Bayes Tree 摘要 提出了一种新型的贝斯树处理稀疏矩阵,在转化为因子图,可以更好的求解平方根信息和映射问题。 文中提出了三个概念 使用概率密度项进行矩阵分解 介绍如何将矩阵分解转换为贝叶斯数和条件概率密度 基于贝叶斯树提供了一种新的系数非线性优化:ISAM2(进行重新排序和重新线性化,避免了批量更新) 问题描述 文章聚焦与如何用增量实时解决非线性问题, 利用增量即新的测量值实时更新估

weixin_37781153的博客 8407

kafka笔记(四):消费者-消费方式/消费者工作流程/消费者API/分区分配及平衡/手动、自动提交offset

(1)pull(拉)模式:consumer采用从broker中主动拉取数据。Kafka采用了这种方式。(2)push(推)模式:Kafka没有采用这种方式,因为由broker决定消息发送速率,很难适应所有消费者的消费速率。例如推送的速度是50m/s,Consumer1、Consumer2就来不及处理消息。pull模式不足之处是,如果Kafka没有数据,消费者可能会陷入循环中,一直返回空数据。

qq_55906442的博客 2125

OpenSceneGraph编译、安装、开发环境

详细描述WIndows 10下使用Visual Studio 2019编译OpenSceneGraph 3.6.5的操作流程

国产CAx(CAD/CAE/CAM)软件研发 8772

kafka java 操作生产,消费

kafka java 操作生产,消费

qq_55961709的博客 1823

别再到处找了!2024最新银河麒麟V10全版本(飞腾/龙芯/兆芯)官方下载与安装保姆级教程

本文提供2024年银河麒麟V10操作系统全版本(飞腾/龙芯/兆芯)的官方下载与安装保姆级教程,涵盖版本选择、镜像获取、启动盘制作及安装优化等关键步骤,助您高效部署国产操作系统。

weixin_26846533的博客 485

【论文汇总】Diffusion Models视频生成/视频编辑/可控视频生成/跨模态视频生成

本文总结了Diffusion Models视频生成领域相关的工作,目前共收录142篇,持续更新中。

沉迷单车的追风少年 1672

kafkaproducer和cosumer写入消息的方式

kafkaproducer和cosumer写入消息的方式 直接发送 ProducerRecord<String, String> record = new ProducerRecord<>(“CustomerCountry”, “Precision Products”,“France”); try { producer.send(record); } catch (Exc...

grasswq的博客 612

【自然语言处理】情感分析(一):基于 NLTK 的 Naive Bayes 实现

朴素贝叶斯(Naive Bayes)分类器可以用来确定输入文本属于某一组类别的概率。例如,预测评论是正面的还是负面的。它是 “朴素的”,它假设文本中的单词是独立的(但在现实的自然人类语言中,单词的顺序传达了上下文信息)。尽管有这些假设,但朴素贝叶斯在使用少量训练集预测类别时具有很高的准确性。

Data · Model · Agent · Repeat 2173

java中 kafka简单应用

ApiModelProperty("接收者(根据 receiverType 来传参) 到人:用户 ID 到部门:部门 Code 到角色:角色 Code ")@ApiModelProperty("消息来源来源的业务系统(1:数字网格+、2:政法平安、3、事件分拨、 4、决策分析、5、三级工作平台)")@ApiModelProperty("消息类型(0 普通、1 预警、2 待办、 3 公告) 5 领导批示 6 领导关注")@ApiModelProperty("消息等级(0 一般、1 紧急)")

HUHAO987654321的博客 1059

基于FPGA的以太网设计(1)----大白话解释什么是以太网

基于FPGA的千兆以太网设计(1)----大白话解释什么是以太网

孤独的单刀 3871

【基于Arduino 的CNC笔式绘图仪】

该机器的结构基于我之前视频中的DIY CNC激光雕刻机,目标是以尽可能少的零件制造最简单的CNC机器。它使用 3 个 NEMA 17 步进电机进行 X、Y 和 Z 轴运动,并使用一个小伺服器进行夹持器。这款数控笔式绘图仪的大脑是一块Arduino UNO板,结合了一个数控屏蔽和三个A4988步进驱动器。在我看来,相当大的工作区域,360x280mm,以及这款笔式绘图仪可以输出的细节水平也令人印象深刻。我真的很惊讶这些图纸的好坏和精确程度,尤其是我使用0.6毫米中性笔的图纸。

vor234的博客 1499

Kafka 从安装到应用

Kafka 从安装到应用

激流丶的博客 2314

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Kafka在项目中的应用

摘要:本文深入探讨Apache Kafka在分布式系统中的核心应用场景,结合Java代码示例展示其实践方法。Kafka作为高吞吐量、分布式的消息流平台,被广泛应用于日志收集(通过生产者/消费者模型实现系统监控)、异步处理(解耦微服务通信)、实时数据流处理(使用KafkaStreams进行流式计算)以及事件溯源(持久化审计日志)四大典型场景。通过与传统消息队列(RabbitMQ/ActiveMQ)的对比分析,指出Kafka特别适合高吞吐量、分布式日志处理的场景。

一碗黄焖鸡三碗米饭的博客 2109

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

kafka:Kafka:原理、应用

容量规划分区数 = max(生产目标吞吐量/单个分区吞吐, 消费目标吞吐量/单个分区吞吐)预留30%容量应对突发流量监控指标关键指标:ISR数量、未同步副本、控制器状态中的灾难恢复定期测试分区重分配和broker下线流程准备跨机房灾备方案在大规模生产环境中,Kafka的性能和可靠性直接影响整个系统的稳定性。深入理解其内部机制,结合业务场景合理设计和调优,是资深工程师必备的核心能力。

weixin_43290370的博客 937

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Kafka实际应用场景,总结原理,使用Kafka注意问题,Kafka应用场景

Kafka 本质上是一个分布式的、基于发布/订阅模式的消息队列(Message Queue),但它的设计使其更像一个分布式实时日志处理平台。发布/订阅模型 (Pub/Sub)生产者 (Producers): 将数据发布到指定的 Topic。消费者 (Consumers): 订阅感兴趣的 Topic,并处理其发布的消息。Topic (主题): 消息的类别或Feed名称。它是逻辑上的概念,是消息的分类单位。分布式、分区化、副本机制 (Partition & Replication)分区 (Partition)

m554062212的博客 1270

架构必备能力——kafka的选型对比及应用场景

经过上述的讲解,我们不难知道Kafka的应用场景非常广泛,你可以只把他当MQ组件,也可以使用它进行日志传输或流处理。它的特点也非常鲜明,就是强大的吞吐量、扩展性和可靠性。当然它与传统MQ组件对比,它在复杂场景下的使用会比较麻烦。但其在大数据领域应用广泛,比如经常作为 Hadoop 的数据源,将数据传输到 Hadoop 中进行存储和处理。当然,在实际选型中我们往往要考虑更多问题,除了明确需求和场景,还要考虑已用的技术栈情况、开发语言支持、版本更新情况。并没有哪一种框架是万金油。

战斧的博客 1万+

Kafka架构及应用

@Author : Spinach | GHB @Link : http://blog.youkuaiyun.com/bocai8058 Kafka简介 Kafka基本概念 Kafka架构 分布式(Distribution) kafka运行过程 Kafka配置 Kafka应用场景 总结 Kafka简介 kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处...

GSpinach的博客 710

Kafka 原理及应用

Kafka 原理及应用

夜空中最亮的星 186

kafka的应用

Kafka是一个分布式的基于发布/订阅模式的消息队列(MessageQueue),主要应用于大数据实时处理领域。发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。Kafka是一个开源的分布式事件流平台(Event StreamingPlatform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。kafka可以在廉价的商用服务器中也能做到每秒100K条的数据传输。支持kafka server的消息分区,及分布式消费。

永远别让世俗淹没生活的热情和浪漫 874

Kafka的一些应用场景

Kafka的一些应用场景活动跟踪消息传递度量和日志记录提交日志流处理参考资料 活动跟踪 Kafka的原始用例,就像在LinkedIn上设计的那样,是用于用户活动的追踪。 网站的用户与前端应用程序交互,后者生成有关用户正在执行的操作的消息。 这可以是被动信息,例如页面查看和点击跟踪,也可以是其他更复杂的操作,例如用户添加到其配置文件中的信息。 消息将发布到一个或多个主题,然后由后端的应用程序使用。 ...

Lestat.Z.的博客 3782

kafka 应用

一. kafka的环境kafka官方文档kafka首先是基于zk启动的二.简介    类似rabbitmq的消息队列,就是一个分布式消息队列,流媒体平台    核心有4个api 是producer comsumer streams connector 该制片API允许应用程序发布的记录流至一个或多个卡夫卡的话题。该消费者API允许应用程序订阅一个或多个主题,并处理所产生的对他们记录的数据流。所述流...

wzd_haha的博客 307
上一篇: kafka认识篇
下一篇: Java API连接Redis
给自己加加油
博客等级 码龄8年 302粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值