当前位置: 首页 > 知识库问答 >
问题:

配置错误。Apache Kafka的NET生产者客户端处理大消息

姬寂离
2023-03-14

我用的是。NET客户端(生产者和消费者)的Apache Kafka.

我试图增加可以发送的最大消息的大小。我阅读了配置手册和一些关于我的问题的帖子:

  1. Kafka:发送15MB信息
  2. https://github.com/confluentinc/kafka-rest/issues/208

我看到应该为生产者设置属性“max.request.size”。因此,我做了以下工作:

   var config = new Dictionary<string, object>
        {
            { "bootstrap.servers", brokerList },
            { "max.request.size", 10 * 1024 * 1024 }
        };

        using (var producer = new Producer<Null, string>(config, null, new StringSerializer(Encoding.UTF8)))
        {
         ...

但当我运行Producer时,会抛出一个异常:

System.InvalidOperationException: 'No such configuration property: "max.request.size"'

Apache Kafka留档告诉以下关于这个属性的生产者:

请求的最大大小(字节)。这实际上也是最大记录大小的上限。请注意,服务器有自己的记录大小上限,这可能与此不同。此设置将限制制作者在单个请求中发送的记录批数,以避免发送大量请求。

如果由于某种原因,文档不是最新的,那么什么是正确的属性?

谢谢

共有1个答案

邴和雅
2023-03-14

confluent kafka dotnet在后台使用librdkafka,它与java客户机有一组不同的配置参数。这些记录如下:

https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md

我相信您要查找的参数是message。最大字节数

 类似资料:
  • 我有一个生产者/消费者模式,如下所示 固定数量的生成器线程,每个线程写入它们自己的BlockingQueue,通过执行器调用 单个使用者线程,读取生产者线程 每个生产者都在运行一个数据库查询,并将结果写入其队列。消费者轮询所有生产者队列。目前,如果出现数据库错误,生产者线程就会死掉,然后消费者就会永远停留在产品队列中等待更多的结果。 我应该如何构造它来正确处理catch错误?

  • 我在服务器上使用GraphQL和mongoose。 当发生验证错误时,GraphQL突变发送状态代码为200的响应。在客户端,响应如下所示: 我想使用阿波罗客户端突变promise的功能访问验证错误。类似: 如何做到这一点?

  • 在我的quarkus rest项目中,我有一个使用mutiny的restclient: 我想处理Property non 2XX httpError,所以我制作了我的例外文件 客户端上的错误调用显示MyExceptionMapper处理响应,但异常会引发,并且不会成为我的Uni客户端响应对象上的失败 我是否以错误的方式对rest客户使用叛变? 谢谢 更新 好吧,我忘了添加依赖quarkus res

  • 我有一个ASP.NET Core1.0Web API应用程序,并试图弄清楚如果我的控制器调用的函数出错,如何将异常消息传递给客户端。 我确实看到了一些使用的文档,但是为了使用它,我必须安装compat shim。在Core1.0中有没有一种新的方法来做这些事情? 这是我一直在尝试的垫片,但它不起作用: 当抛出时,我查看客户端,在内容中找不到我正在发送的消息。

  • 我设置了一个Spring云流Kafka制作人和消费者,有3个Kafka经纪人在运行。我已经设置了min.insync。将副本复制到4,以查看生产者错误处理的工作方式。消息通道。send(发送) 以上是我的生产者配置。虽然retries设置为3,但生产者仍会多次重试。虽然sync设置为true,但发送呼叫会立即发出。虽然定义了错误通道和目标,并且将errorChannelEnabled设置为true

  • 我尝试在使用邮件时进行以下错误处理: 如果出现序列化错误:在DLT中发送消息 我拥有的(2.5.1Kafka客户端的Spring kafka 2.5.5版本)如下: 现在,如果我发送不可序列化的消息,我的消息将不重试地发送到DLT- 在我的中,我有一个,捕获并重新捕获。 我应该没有重试,但我得到了2个重试,每个20秒(而不是10秒?),并在2次重试后向DLT发送了一条消息。 如果我删除errorH