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

如何决定在spring Kafka中要设置的并发性?

苏淇
2023-03-14

我正在使用@Kafkalistener注释编写一个kafka使用者,我知道有一种方法可以使用ConcurrentKafkaListenerContainerFactory中的方法来增加来自不同分区的并发kafka使用者的数量

e.g. factory.setConcurrency(3);

用于setconcurrency的Javadoc如下所示:-

运行的并发KafkaMessageListenerContainer的最大数目。来自同一分区内的消息将按顺序处理。

现在我的问题是

ConcurrentKafkaListenerContainerFactory.setconcurrency (<Value>) 

这样我们就可以在使用消息时实现高吞吐量。

我应该使用144/3=48作为并发系数,还是有公式可以导出这个数字?

共有1个答案

陆正德
2023-03-14

是的,最好的办法是在每个实例中将并发性设置为48,这样每个分区都将从使用者组中的唯一线程中使用,而且为了实现高吞吐量,可以使用批处理大小更大的批处理侦听器

另一个最好的选择是运行更多的实例,例如14,每个实例的并发级别为10。在这两种方法中,您还需要为每个实例考虑可用的CPU,拥有超过头线程的CPU不会提供更好的性能

从1.1版开始,您可以配置@kafkalistener方法来接收从使用者轮询接收的整个使用者记录批。若要配置侦听器容器工厂以创建批处理侦听器,可以设置batchListener属性

 类似资料:
  • 问题内容: 我得到了这个servlet,它将pdf文件返回到客户端Web浏览器。我们不希望冒任何风险,即当请求数量过多时,服务器将瘫痪。 我们希望采用一种应用程序级别(程序)的方式来设置并发请求数的限制,并在达到限制时向浏览器返回错误消息。我们需要在审批级别进行操作,因为我们在开发级别(tomcat)和生产级别(websphere)具有不同的servlet容器。 我必须强调,我想控制最大请求数,而

  • 如何在css中设置固定背景并滚动???而且我一直试图设置一个背景来覆盖所有维度,因为我总是以模糊的背景结束:( 我在这方面相对较新,所以请不要评判我,这是我的css:body#bg{宽度:100%;高度:100%;位置:绝对;左:0px;顶部:0px;z-index:0;背景附件:固定; }

  • 问题内容: 我正在并发hashmap中处理大约1000个元素。默认并发级别为16。任何人都可以通过一些算法或因素帮助我,从中我可以确定适合于我的方案的并发级别,或者并发级别以何种方式影响多线程的处理。 我的并发级别(虚拟值)为20。需要进行有效设置 问题答案: 根据文档: 更新操作之间允许的并发性由可选的构造函数参数(默认值)指导,该参数 用作内部调整的提示 。该表在内部进行了分区,以尝试允许指定

  • 下面是我已经拥有的代码:

  • 我们的应用程序(spring boot,spring-cloud-stream)侦听多个Kafka主题(有3个分区的TOPIC_A,有1个分区的TOPIC_B,有10个分区的TOPIC_C)即3@StreamListener方法。 我们需要定制错误处理和重试机制,因此通过配置ConcurrentKafkaListenerContainerFactory bean来实现这一点。 使用下面共享的反射解

  • 问题内容: 也许这是一个愚蠢的问题,但我似乎找不到一个明显的答案。 我需要一个仅包含唯一值的并发FIFO队列。尝试添加队列中已经存在的值只会忽略该值。如果不是为了线程安全,那将是微不足道的。在Java中是否存在数据结构,或者在Interweb上是否存在代码snipit表现出这种行为? 问题答案: 如果您想要比完全同步更好的并发性,那么我知道有一种方法可以使用ConcurrentHashMap作为支