kafka.common.errors.RecordTooLargeException,kafka.common.MessageSizeTooLargeException

1、向Kafka中输入数据,抛异常

WARN async.DefaultEventHandler: Produce request with correlation id 92548048 failed due to [TopicName,1]: org.apache.kafka.common.errors.RecordTooLargeException

官网两个参数描述如下:

message.max.bytesThe maximum size of message that the server can receiveint1000012[0,...]high
fetch.message.max.bytes1024 * 1024The number of byes of messages to attempt to fetch for each topic-partition in each fetch request. These bytes will be read into memory for each partition, so this helps control the memory used by the consumer. The fetch request size must be at least as large as the maximum message size the server allows or else it is possible for the producer to send messages larger than the consumer can fetch.

message.max.bytes:server能接受消息体的最大值。

fetch.message.max.bytes:consumer从partition中获取消息体放入内存中,这个参数控制conusmer所用的内存大小。如果message.max.bytes大于fetch.message.max.bytes,就会导致consumer分配的内存放不下一个message。

因此,在server.properties中添加配置项

#broker能接收消息的最大字节数
message.max.bytes=20000000
#broker可复制的消息的最大字节数
fetch.message.max.bytes=20485760

如果不想修改配置文件,可以采用修改topic配置的方法,与server配置项message.max.bytes对应的topic配置项是max.message.bytes

bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic my-topic
    --config max.message.bytes=128000

注意:需要修改所有节点的配置文件并且重启kafka,这样重新选举主节点的时候能够读取最新的配置文件,并且在以后主节点切换的时候读取的配置文件都是同一个配置。

2、读取Kafka中数据,有异常

 

kafka.common.MessageSizeTooLargeException: Found a message larger than the maximum fetch size of this consumer on topic TopicName partition 0 at fetch offset 42057452. Increase the fetch size, or decrease the maximum message size the broker will allow.

这个与Kafka消费者的参数fetch.message.max.bytes有关,

在增加message.max.bytes之后,表示进入Kafka消息体变大,此时控制消费者接受消息大小的参数也要有相应变化,

我使用Flume读取Kafka中消息,从而我Flume Agent的配置文件中会有如下配置

consumer.sources.sourcename.kafka.fetch.message.max.bytes=20485760

 

### 回答1: org.apache.kafka.common.errorsKafka中的一个Java包,其中包含了一些常见的错误类型。这些错误类型包括网络连接错误、请求超时错误、无效请求错误等等。在Kafka的使用过程中,如果出现了这些错误,我们可以根据错误类型来进行相应的处理和调试。 ### 回答2: org.apache.kafka.common.errors是一个Java编程语言中,Apache基金会的开源项目Kafka的错误信息类。它定义了在Kafka应用程序中可能会发生的各种错误类型,例如:无可用的副本、重复序列号、leader选举失败、生产者阻塞、消费者滞后等等。当Kafka应用程序检测到这些错误时,它将异常抛出到处理程序中来,以便提醒开发人员关于错误的发生,以及如何处理错误。这些错误信息是Kafka应用程序中的关键部分,因为它们在帮助开发人员理解问题源头时是非常有用的。 org.apache.kafka.common.errors包括了多个常见的错误,其中一个比较重要的错误类型是LeaderNotAvailableException。这种错误表示消费者或生产者试图连接到一个没有可用leader的分区。LeaderNotAvailableException通常是由leader选举失败、leader不可用或节点宕机等问题引起的,这将导致Kafka无法从这个分区读取或写入数据。ProducerFencedException是另一种重要的错误类型,表示生产者被分区过程隔离,Kafka不会接受它发送的任何消息。当Kafka集群中存在多个与生产者关联的进程时,这种错误可能会发生。 在Kafka应用程序中,处理这些错误的方法通常包括调整集群配置、重新启动Kafka进程、创建新的topic分区或增加broker等。在发生错误后,最好及时处理它,避免导致更严重的问题。 总之,org.apache.kafka.common.errors是一个非常重要的Java类,它提供了在Kafka应用程序中处理错误的基础工具。开发人员可以根据这些错误信息的帮助快速定位问题,并采取适当的步骤来解决问题。通过处理这些错误,Kafka应用程序可以更可靠地工作,并继续为业务服务。 ### 回答3: org.apache.kafka.common.errorsKafka集群中出现的错误类型。在 Kafka 集群运行过程中,可能会出现各种各样的错误,而 org.apache.kafka.common.errors 提供了 Kafka 集群中所有可能出现的错误类型,这些错误类型将被 Kafka 集群在遇到问题时返回,从而让开发人员知道集群出现了什么问题。 org.apache.kafka.common.errors 包含了很多错误类型,下面是一些常见的: 1. UnknownTopicOrPartitionExceptionKafka Broker 在处理请求时,发现请求的 topic 或 partition 不存在。 2. RecordTooLargeException:消息大小超过了broker所允许的最大限制。 3. OffsetOutOfRangeException:当consumer请求的offset比最小的offset还小或者比最大的offset还大时,该异常会被抛出。 4. NotLeaderForPartitionException:当前节点不是该 partition 的 leader node。 5. InvalidTopicException:当Kafka Producer尝试向一个不存在的主题发送消息时会抛出此异常。 以上仅是一部分,常见的Kafka错误类型。当 Kafka 集群出现错误时,开发人员需要根据错误类型进行相应的处理和调整,以确保 Kafka 集群的正常运行。同时,开发人员也需要对错误类型有足够的了解,以便快速排除问题和改进系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值