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

广州城市建设规划局网站手机上如何制作自己的网站

广州城市建设规划局网站,手机上如何制作自己的网站,电子商务网站建设的好处有哪些,网站免费空间免备案在 Kafka 中,默认情况下消息是按分区进行顺序存储和读取的,但全局顺序消费(即所有分区的消息按顺序消费)较难实现。下面分别介绍 Kafka 按分区顺序消费以及实现全局顺序消费的相关内容。 按分区顺序消费 Kafka 本身可以保证单个…

在 Kafka 中,默认情况下消息是按分区进行顺序存储和读取的,但全局顺序消费(即所有分区的消息按顺序消费)较难实现。下面分别介绍 Kafka 按分区顺序消费以及实现全局顺序消费的相关内容

按分区顺序消费

Kafka 本身可以保证单个分区内的消息是顺序写入和顺序读取的,以下是其原理和实现要点:

原理

  • 消息写入:Kafka 生产者在发送消息时,如果指定了分区,消息会被顺序追加到该分区的日志文件末尾。Kafka 的分区日志是一个只允许追加写入的文件,这种设计保证了消息在分区内的顺序性。
  • 消息读取:Kafka 消费者从分区中按偏移量(offset)顺序读取消息,偏移量是消息在分区内的唯一标识,消费者按照偏移量从小到大的顺序读取消息,从而保证了消息消费的顺序性。

实现要点

  • 生产者配置:生产者在发送消息时,需要明确指定消息要发送到的分区。可以通过自定义分区器或者直接指定分区号来实现。
import org.apache.kafka.clients.producer.*;
import java.util.Properties;public class OrderedProducer {public static void main(String[] args) {Properties props = new Properties();props.put("bootstrap.servers", "localhost:9092");props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");Producer<String, String> producer = new KafkaProducer<>(props);String topic = "test-topic";int partition = 0; // 指定分区号for (int i = 0; i < 10; i++) {ProducerRecord<String, String> record = new ProducerRecord<>(topic, partition, "key-" + i, "value-" + i);producer.send(record);}producer.close();}
}
  • 消费者配置:消费者需要确保按顺序处理消息,并且在处理完一条消息后再处理下一条消息。同时,要避免手动调整偏移量,以免破坏消息的顺序。
import org.apache.kafka.clients.consumer.*;
import java.time.Duration;
import java.util.Collections;
import java.util.Properties;public class OrderedConsumer {public static void main(String[] args) {Properties props = new Properties();props.put("bootstrap.servers", "localhost:9092");props.put("group.id", "test-group");props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");props.put("auto.offset.reset", "earliest");KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);String topic = "test-topic";consumer.subscribe(Collections.singletonList(topic));try {while (true) {ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));for (ConsumerRecord<String, String> record : records) {System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());// 处理完一条消息后再处理下一条}consumer.commitSync(); // 同步提交偏移量}} finally {consumer.close();}}
}

全局顺序消费

要实现全局顺序消费,需要将所有消息发送到同一个分区,因为 Kafka 只能保证单个分区内的消息顺序性。但这种方式会带来性能瓶颈,因为单个分区的处理能力是有限的。

实现要点

  • 生产者配置:生产者需要将所有消息都发送到同一个分区,可以通过自定义分区器来实现。
import org.apache.kafka.clients.producer.*;
import java.util.Properties;public class GlobalOrderedProducer {public static void main(String[] args) {Properties props = new Properties();props.put("bootstrap.servers", "localhost:9092");props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");props.put("partitioner.class", "com.example.SinglePartitionPartitioner");Producer<String, String> producer = new KafkaProducer<>(props);String topic = "test-topic";for (int i = 0; i < 10; i++) {ProducerRecord<String, String> record = new ProducerRecord<>(topic, "key-" + i, "value-" + i);producer.send(record);}producer.close();}
}// 自定义分区器,将所有消息发送到同一个分区
class SinglePartitionPartitioner implements Partitioner {@Overridepublic int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster) {return 0; // 所有消息都发送到分区0}@Overridepublic void close() {}@Overridepublic void configure(java.util.Map<String, ?> configs) {}
}
  • 消费者配置:只需要一个消费者实例来消费该分区的消息,避免多个消费者同时消费同一个分区导致的顺序问题。
import org.apache.kafka.clients.consumer.*;
import java.time.Duration;
import java.util.Collections;
import java.util.Properties;public class GlobalOrderedConsumer {public static void main(String[] args) {Properties props = new Properties();props.put("bootstrap.servers", "localhost:9092");props.put("group.id", "test-group");props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");props.put("auto.offset.reset", "earliest");KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);String topic = "test-topic";consumer.subscribe(Collections.singletonList(topic));try {while (true) {ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));for (ConsumerRecord<String, String> record : records) {System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());// 处理完一条消息后再处理下一条}consumer.commitSync(); // 同步提交偏移量}} finally {consumer.close();}}
}
http://www.dtcms.com/wzjs/64693.html

相关文章:

  • 启东网站建设公司百度收录比较好的网站
  • 迈肯奇迹做网站网文网站排名
  • java做网站和php网站排名优化软件有哪些
  • 黄页哪个网站好现在做推广的新渠道有哪些
  • 建设网站的相关费用百度竞价排名规则及费用
  • 浦东新区中国建设银行官网站栾城seo整站排名
  • 网站优化排名易下拉稳定合肥网站制作公司
  • 百度推广管理平台登录桔子seo工具
  • 网站建设的学习方法南平网站seo
  • 动漫网站建设毕业设计百度网盘app官网
  • 定制跟模板网站有什么不一样网站运营工作的基本内容
  • 专做mad的网站专业拓客团队怎么收费
  • 做网站文字居中代码百度推广一个点击多少钱
  • 日本免费云服务器地址seo系统
  • 舆情分析是个什么行业嘉峪关seo
  • dw怎么做单页网站做网站优化推广
  • 做h5页面的网站有哪些百度官方网站首页
  • 做外链权重高的女性网站sem推广和seo的区别
  • wordpress主题 破解主题手机seo快速排名
  • 聚名网买卖域名合法吗宁波seo在线优化
  • 好看的网站颜色杭州疫情最新消息
  • 网站开发工具评价seo职位
  • 网站制作复杂吗常见的网站推广方法
  • 网站如何做传输网盘太原建站seo
  • 阿里云服务器 做网站百度收录批量提交入口
  • 建设网站几钱宁波关键词优化企业网站建设
  • 郑州大型网站建设价格目前最新的营销方式有哪些
  • 西安知名的集团门户网站建设服务商电子制作网站
  • 水果网站模版万网域名查询官网
  • 网站一般在哪里找今天新闻摘抄十条