首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

03 Confluent_Kafka权威指南 第三章: Kafka 生产者:向kafka写消息

无论你将kafka当作一个队列、消息总线或者数据存储平台,你都需要通过一个生产者向kafka写入数据,通过一个消费者从kafka读取数据。或者开发一个同时具备生产者和消费者功能的程序来使用kafka。 例如,在信用卡交易处理系统中,有一个客户端的应用程序(可能是一个在线商店)在支付事物发生之后将每个事物信息发送到kafka。另外一个应用程序负责根据规则引擎去检查该事物,确定该事物是否被批准还是被拒绝。然后将批准/拒绝的响应写回kafka。之后kafka将这个事物的响应回传。第三个应用程序可以从kafka中读取事物信息和其审批状态,并将他们存储在数据库中,以便分析人员桑后能对决策进行检查并改进审批规则引擎。 apache kafka提供了内置的客户端API,开发者在开发与kafka交互的应用程序时可以使用这些API。 在本章中,我们将学习如何使用kafka的生产者。首先对其设计理念和组件进行概述。我们将说明如何创建kafkaProducer和ProducerRecord对象。如何发送信息到kafka,以及如何处理kafak可能返回的错误。之后,我们将回顾用于控制生产者行为的重要配置选项。最后,我们将深入理解如何使用不同的分区方法和序列化。以及如何编写自己的序列化器和分区器。 在第四章我们将对kafka消费者客户端和消费kafka数据进行阐述。

03

java.io.InvalidClassException异常解决

serialVersionUID用作Serializable类中的版本控件。如果您没有显式声明serialVersionUID,JVM将根据您的Serializable类的各个方面自动为您执行此操作,如Java(TM)对象序列化规范中所述。 序列化运行时将每个可序列化类与版本号相关联,称为serialVersionUID,在反序列化期间使用该版本号来验证序列化对象的发送方和接收方是否已加载与该序列化兼容的该对象的类。如果接收者为具有与相应发送者类的serialVersionUID不同的对象加载了一个类,则反序列化将导致InvalidClassException。 通俗理解就是serialVersionUID是适用于Java的序列化机制,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是java.io.InvalidClassException。 serialVersionUID两种生成方式: a.显式声明,该字段必须是static,final和long类型: private static final long serialVersionUID = 1L; b.如果没有显式声明serialVersionUID,JVM将使用自己的算法生成默认SerialVersionUID。

01
领券