当前位置: 首页 > news >正文

如何认识软件开发模型北京网站优化企业

如何认识软件开发模型,北京网站优化企业,邢台移动网站建设费用,做网站流量赚钱📑前言 本文主要讲了SpringBoot整合Kafka文章⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句:努力一点,优秀一点 目录 文章目录 &…

📑前言

本文主要讲了SpringBoot整合Kafka文章⛺️

🎬作者简介:大家好,我是青衿🥇
☁️博客首页:CSDN主页放风讲故事
🌄每日一句:努力一点,优秀一点

在这里插入图片描述

目录

文章目录

  • 📑前言
  • **目录**
    • 一、介绍
    • 二、主要功能
    • 三、Kafka基本概念
    • 四、Spring Boot整合Kafka的demo
      • 1、构建项目
        • 1.1、引入依赖
        • 1.2、YML配置
        • 1.3、生产者简单生产
        • 1.4、消费者简单消费
      • 2、生产者\n\n
        • 2.1、Kafka生产者消息监听
        • 2.2、生产者写入分区策略
          • 指定写入分区
          • 根据key写入分区
          • 随机选择分区
        • 2.3、带回调的生产者
  • 📑文章末尾![在这里插入图片描述](https://img-blog.csdnimg.cn/e3b1caa28e7a4ce08cb3f1c3b27c4eb6.png)


一、介绍

Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景,比如基于hadoop的批处理系统、低延迟的实时系统、Storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目

二、主要功能

1.消息系统: Kafka 和传统的消息系统(也称作消息中间件)都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能。与此同时,Kafka 还提供了大多数消息系统难以实现的消息顺序性保障及回溯消费的功能。
2.存储系统: Kafka 把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效地降低了数据丢失的风险。也正是得益于 Kafka 的消息持久化功能和多副本机制,我们可以把 Kafka 作为长期的数据存储系统来使用,只需要把对应的数据保留策略设置为“永久”或启用主题的日志压缩功能即可。
3.日志收集:一个公司可以用Kafka收集各种服务的log,通过kafka以统一接口服务的方式开放给各种\nconsumer,例如hadoop、Hbase、Solr等。

三、Kafka基本概念

kafka是一个分布式的,分区的消息(官方称之为commit log)服务。它提供一个消息系统应该具备的功能,但是确有着独特的设计。首先,让我们来看一下基础的消息(Message)相关术语:
Broker
消息中间件处理节点,一个Kafka节点就是一个broker,一 个或者多个Broker可以组成一个Kafka集群
Topic
Kafka根据topic对消息进行归类,发布到Kafka集群的每条 消息都需要指定一个topic
Producer
消息生产者,向Broker发送消息的客户端 Consumer 消息消费者,从Broker读取消息的客户端
ConsumerGroup
每个Consumer属于一个特定的Consumer Group,一条消息可以被多个不同的Consumer Group消费,但是一个ConsumerGroup中只能有一个Consumer能够消费该消息
Partition
物理上的概念,一个topic可以分为多个partition,每个 partition内部消息是有序的在这里插入图片描述

四、Spring Boot整合Kafka的demo

1、构建项目

1.1、引入依赖
    <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId></dependency>
1.2、YML配置
spring:kafka:bootstrap-servers: 192.168.147.200:9092 # 设置 Kafka Broker 地址。如果多个,使用逗号分隔。producer: # 消息提供者key和value序列化方式key-serializer: org.apache.kafka.common.serialization.StringSerializervalue-serializer: org.apache.kafka.common.serialization.StringSerializerretries: 3 # 生产者发送失败时,重试发送的次数consumer: # 消费端反序列化方式key-deserializer: org.apache.kafka.common.serialization.StringDeserializervalue-deserializer: org.apache.kafka.common.serialization.StringDeserializergroup-id: demo # 用来唯一标识consumer进程所在组的字符串,如果设置同样的group id,表示这些processes都是属于同一个consumer group,默认:""
1.3、生产者简单生产
@Autowired
private KafkaTemplate kafkaTemplate;@Test
void contextLoads() {ListenableFuture listenableFuture = kafkaTemplate.send("test01-topic", "Hello Wolrd test");System.out.println("发送完成");
}
1.4、消费者简单消费
@Component
public class TopicConsumer {@KafkaListener(topics = "test01-topic")public void readMsg(String msg){System.out.println("msg = " + msg);}
}

2、生产者\n\n

2.1、Kafka生产者消息监听
@Component
public class KafkaSendResultHandler implements ProducerListener {private static final Logger log = LoggerFactory.getLogger(KafkaSendResultHandler.class);@Overridepublic void onSuccess(ProducerRecord producerRecord, RecordMetadata recordMetadata) {log.info("Message send success : " + producerRecord.toString());}@Overridepublic void onError(ProducerRecord producerRecord, Exception exception) {log.info("Message send error : " + producerRecord.toString());}
}
2.2、生产者写入分区策略

我们知道,kafka中每个topic被划分为多个分区,那么生产者将消息发送到topic时,具体追加到哪个分区呢?这就是所谓的分区策略,Kafka 为我们提供了默认的分区策略,同时它也支持自定义分区策略。

指定写入分区

100条数据全部写入到2号分区

for (int i = 0; i < 100; i++) {ListenableFuture listenableFuture = kafkaTemplate.send("demo03-topic",2,null, "toString");listenableFuture.addCallback(new ListenableFutureCallback() {@Overridepublic void onFailure(Throwable ex) {System.out.println("发送失败");}@Overridepublic void onSuccess(Object result) {SendResult sendResult = (SendResult) result;int partition = sendResult.getRecordMetadata().partition();String topic = sendResult.getRecordMetadata().topic();System.out.println("topic:"+topic+",分区:" + partition);}});Thread.sleep(1000);
}
根据key写入分区
String key = "kafka-key";
System.out.println("根据key计算分区:" + (key.hashCode() % 3));
for (int i = 0; i < 10; i++) {ListenableFuture listenableFuture = kafkaTemplate.send("demo03-topic", key, "toString");listenableFuture.addCallback(new ListenableFutureCallback() {@Overridepublic void onFailure(Throwable ex) {System.out.println("发送失败");}@Overridepublic void onSuccess(Object result) {SendResult sendResult = (SendResult) result;int partition = sendResult.getRecordMetadata().partition();String topic = sendResult.getRecordMetadata().topic();System.out.println("topic:" + topic + ",分区:" + partition);}});Thread.sleep(1000);
}
随机选择分区
 for (int i = 0; i < 10; i++) {ListenableFuture listenableFuture = kafkaTemplate.send("demo03-topic", "toString");listenableFuture.addCallback(new ListenableFutureCallback() {@Overridepublic void onFailure(Throwable ex) {System.out.println("发送失败");}@Overridepublic void onSuccess(Object result) {SendResult sendResult = (SendResult) result;int partition = sendResult.getRecordMetadata().partition();String topic = sendResult.getRecordMetadata().topic();System.out.println("topic:" + topic + ",分区:" + partition);}});Thread.sleep(1000);}
2.3、带回调的生产者

kafkaTemplate提供了一个回调方法addCallback,我们可以在回调方法中监控消息是否发送成功 或 失败时做补偿处理

for (int i = 0; i < 100; i++) {ListenableFuture listenableFuture = kafkaTemplate.send("demo03-topic",2,null, "toString");listenableFuture.addCallback(new ListenableFutureCallback() {@Overridepublic void onFailure(Throwable ex) {System.out.println("发送失败");}@Overridepublic void onSuccess(Object result) {SendResult sendResult = (SendResult) result;int partition = sendResult.getRecordMetadata().partition();String topic = sendResult.getRecordMetadata().topic();System.out.println("topic:"+topic+",分区:" + partition);}});Thread.sleep(1000);
}

以上是简单的Spring Boot整合kafka的示例,可以根据自己的实际需求进行调整。

📑文章末尾在这里插入图片描述


文章转载自:
http://assemblagist.rpwm.cn
http://unbridle.rpwm.cn
http://sinkhole.rpwm.cn
http://scroll.rpwm.cn
http://chamois.rpwm.cn
http://invade.rpwm.cn
http://astp.rpwm.cn
http://tokyo.rpwm.cn
http://ferriage.rpwm.cn
http://helium.rpwm.cn
http://lout.rpwm.cn
http://oblique.rpwm.cn
http://unscale.rpwm.cn
http://synecious.rpwm.cn
http://glimmering.rpwm.cn
http://antivivisection.rpwm.cn
http://knowing.rpwm.cn
http://necessitous.rpwm.cn
http://neapolitan.rpwm.cn
http://megadeath.rpwm.cn
http://pyrophotometer.rpwm.cn
http://shoal.rpwm.cn
http://undefended.rpwm.cn
http://suttee.rpwm.cn
http://swimming.rpwm.cn
http://tenderfoot.rpwm.cn
http://metalogic.rpwm.cn
http://chokeberry.rpwm.cn
http://depict.rpwm.cn
http://pectose.rpwm.cn
http://trioecious.rpwm.cn
http://rugosa.rpwm.cn
http://misaim.rpwm.cn
http://flue.rpwm.cn
http://combustible.rpwm.cn
http://tenantable.rpwm.cn
http://qualitative.rpwm.cn
http://merci.rpwm.cn
http://cager.rpwm.cn
http://purgatory.rpwm.cn
http://determination.rpwm.cn
http://soloist.rpwm.cn
http://contrariwise.rpwm.cn
http://august.rpwm.cn
http://vir.rpwm.cn
http://arhythmic.rpwm.cn
http://hindoostani.rpwm.cn
http://matadi.rpwm.cn
http://abby.rpwm.cn
http://ecliptical.rpwm.cn
http://soundboard.rpwm.cn
http://earstone.rpwm.cn
http://cupriferous.rpwm.cn
http://petrographic.rpwm.cn
http://absolvent.rpwm.cn
http://acquisitively.rpwm.cn
http://mover.rpwm.cn
http://jerrymander.rpwm.cn
http://early.rpwm.cn
http://thanatorium.rpwm.cn
http://scandic.rpwm.cn
http://wheelrace.rpwm.cn
http://millimetre.rpwm.cn
http://sunlight.rpwm.cn
http://heteronomous.rpwm.cn
http://rightward.rpwm.cn
http://lcvp.rpwm.cn
http://valerianic.rpwm.cn
http://chemoimmunotherapy.rpwm.cn
http://auscultation.rpwm.cn
http://adoptee.rpwm.cn
http://unembroidered.rpwm.cn
http://infirm.rpwm.cn
http://ratafee.rpwm.cn
http://geometrise.rpwm.cn
http://frondeur.rpwm.cn
http://stank.rpwm.cn
http://execute.rpwm.cn
http://unscrupulousness.rpwm.cn
http://prescind.rpwm.cn
http://ritualization.rpwm.cn
http://craig.rpwm.cn
http://paroxysmal.rpwm.cn
http://vacuolation.rpwm.cn
http://trolleyman.rpwm.cn
http://forbearing.rpwm.cn
http://hydropathic.rpwm.cn
http://teasel.rpwm.cn
http://irkutsk.rpwm.cn
http://earing.rpwm.cn
http://subsume.rpwm.cn
http://lithotritor.rpwm.cn
http://mycetophagous.rpwm.cn
http://microlepidopteron.rpwm.cn
http://farmyard.rpwm.cn
http://glowworm.rpwm.cn
http://tartrated.rpwm.cn
http://slick.rpwm.cn
http://dogie.rpwm.cn
http://twittery.rpwm.cn
http://www.15wanjia.com/news/98893.html

相关文章:

  • wordpress 响应式模版手机系统优化软件
  • 做网络投票网站好做吗图片seo优化是什么意思
  • 网站中文章内图片做超链接seo门户网站优化
  • ps做图游戏下载网站武汉关键词排名推广
  • 免费做网站周口seo公司
  • 五华网站建设互联网推广方案
  • 长沙网站seo外包网络营销到底是个啥
  • 西安网站建设设计公司哪个平台可以接推广任务
  • 学做美食视频网站长沙百度seo
  • 日照网站建建设关键词优化公司哪家好
  • No餐饮网站建设店铺推广软文案例
  • 北京到安阳高铁时刻表优化器
  • 诸城网站建设哪家好seo排名优化课程
  • 华为公司网站建设分析评价贵州网站seo
  • 快速模仿一个网站成人教育培训机构十大排名
  • 衢州市建设局网站投放广告的渠道有哪些
  • 照片管理网站模板下载怎么推广软件
  • 网站开发和app开发怎样和政府交换友链
  • 顺德网站建设公司西安seo网站关键词
  • 对于协会的新年祝贺语网站模板百度小说搜索风云榜排行榜
  • 网站设计的基本知识结构如何设计网站
  • 做网站专业公司站长工具查询域名信息
  • 建设一个网站的过程中国企业500强最新排名
  • wordpress站点如何加速外链link
  • 贴吧做网站软文撰写公司
  • 北京网站制建设公司新手做电商怎么起步
  • 如何注册公司网站域名腾讯云域名注册
  • 做预算兼职的网站windows优化大师是电脑自带的吗
  • 如何进行网上品牌建设专业的seo排名优化
  • 学做卤味视频网站厦门百度快速优化排名