【Kafka】Kafka 消息封装

简介: 【4月更文挑战第10天】【Kafka】Kafka 消息封装

image.png

在 Kafka 中,消息是以 ProducerRecordConsumerRecord 对象的形式进行封装和传输的。这些对象包含了消息的关键信息,如主题(Topic)、键(Key)、值(Value)、分区(Partition)、偏移量(Offset)等。以下是 Kafka 中消息的封装方式:

ProducerRecord

ProducerRecord 是生产者发送消息时使用的对象,用于封装待发送的消息内容。

  • Topic(主题): 指定消息要发送到的主题,是消息的目的地。
  • Key(键): 可选项,用于确定消息被发送到哪个分区。具有相同键的消息将被发送到同一个分区中。
  • Value(值): 消息的实际内容,通常是需要传输的数据。
  • Partition(分区): 可选项,如果未指定分区,则由分区器根据键的哈希值来决定消息被发送到哪个分区。
  • Timestamp(时间戳): 可选项,消息的时间戳。
  • Headers(头部): 可选项,用于存储消息的元数据信息。
ProducerRecord<String, String> record = new ProducerRecord<>("topic_name", "key", "value");

ConsumerRecord

ConsumerRecord 是消费者从 Kafka 中读取消息时接收到的对象,用于封装已接收的消息内容。

  • Topic(主题): 指定消息所属的主题。
  • Partition(分区): 指定消息所属的分区。
  • Offset(偏移量): 指定消息在分区中的偏移量,用于唯一标识消息在分区中的位置。
  • Key(键): 消息的键。
  • Value(值): 消息的实际内容。
  • Timestamp(时间戳): 消息的时间戳。
  • Headers(头部): 消息的头部信息。
ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
for (ConsumerRecord<String, String> record : records) {
   
   
    System.out.printf("topic = %s, partition = %d, offset = %d, key = %s, value = %s%n",
                      record.topic(), record.partition(), record.offset(),
                      record.key(), record.value());
}

通过使用这些消息对象,Kafka 实现了消息的封装和传输,使得生产者能够将消息发送到指定的主题,消费者能够从指定的主题消费消息,并且可以根据需要使用键和分区来控制消息的路由和顺序。

相关文章
|
消息中间件 大数据 Kafka
Kafka消息封装揭秘:从Producer到Consumer,一文掌握高效传输的秘诀!
【8月更文挑战第24天】在分布式消息队列领域,Apache Kafka因其实现的高吞吐量、良好的可扩展性和数据持久性备受开发者青睐。Kafka中的消息以Record形式存在,包括固定的头部与可变长度的消息体。生产者(Producer)将消息封装为`ProducerRecord`对象后发送;消费者(Consumer)则从Broker拉取并解析为`ConsumerRecord`。消息格式简化示意如下:消息头 + 键长度 + 键 + 值长度 + 值。键和值均为字节数组,需使用特定的序列化/反序列化器。理解Kafka的消息封装机制对于实现高效、可靠的数据传输至关重要。
543 4
|
消息中间件 Kafka 双11
消息中间件mq的比较:含RocketMQ、RabbitMQ、Kafka; rocketmq底层封装
消息中间件mq的比较:含RocketMQ、RabbitMQ、Kafka 共同点都是消息队列,有mq的特性 队列(先进先出原则)
615 66
消息中间件mq的比较:含RocketMQ、RabbitMQ、Kafka; rocketmq底层封装
|
开发者 图形学 前端开发
绝招放送:彻底解锁Unity UI系统奥秘,五大步骤教你如何缔造令人惊叹的沉浸式游戏体验,从Canvas到动画,一步一个脚印走向大师级UI设计
【8月更文挑战第31天】随着游戏开发技术的进步,UI成为提升游戏体验的关键。本文探讨如何利用Unity的UI系统创建美观且功能丰富的界面,包括Canvas、UI元素及Event System的使用,并通过具体示例代码展示按钮点击事件及淡入淡出动画的实现过程,助力开发者打造沉浸式的游戏体验。
871 0
|
消息中间件 存储 算法
【Kafka】 Kafka中的消息封装
【4月更文挑战第5天】【Kafka】Kafka中的消息封装
|
消息中间件 Kafka Python
python-kafka客户端封装
python-kafka客户端封装
256 0
|
消息中间件 Kafka Linux
Linux qtcreator下kafka之librdkafka库的C++语言封装,实现生产和消费(2)(★firecat推荐★)
Linux qtcreator下kafka之librdkafka库的C++语言封装,实现生产和消费(1)(★firecat推荐★)
1213 0
|
消息中间件 Linux Kafka
Linux qtcreator下kafka之librdkafka库的C++语言封装,实现生产和消费(1)(★firecat推荐★)
Linux qtcreator下kafka之librdkafka库的C++语言封装,实现生产和消费(★firecat推荐★)
754 0
|
消息中间件 存储 缓存
kafka 的数据是放在磁盘上还是内存上,为什么速度会快?
Kafka的数据存储机制通过将数据同时写入磁盘和内存,确保高吞吐量与持久性。其日志文件按主题和分区组织,使用预写日志(WAL)保证数据持久性,并借助操作系统的页缓存加速读取。Kafka采用顺序I/O、零拷贝技术和批量处理优化性能,支持分区分段以实现并行处理。示例代码展示了如何使用KafkaProducer发送消息。
|
消息中间件 存储 运维
为什么说Kafka还不是完美的实时数据通道
【10月更文挑战第19天】Kafka 虽然作为数据通道被广泛应用,但在实时性、数据一致性、性能及管理方面存在局限。数据延迟受消息堆积和分区再平衡影响;数据一致性难以达到恰好一次;性能瓶颈在于网络和磁盘I/O;管理复杂性涉及集群配置与版本升级。
550 1
|
消息中间件 Java Kafka
Flink-04 Flink Java 3分钟上手 FlinkKafkaConsumer消费Kafka数据 进行计算SingleOutputStreamOperatorDataStreamSource
Flink-04 Flink Java 3分钟上手 FlinkKafkaConsumer消费Kafka数据 进行计算SingleOutputStreamOperatorDataStreamSource
439 1