首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >升级到2.1后,使用spring-cloud stream和kafka的项目打开的文件太多

升级到2.1后,使用spring-cloud stream和kafka的项目打开的文件太多
EN

Stack Overflow用户
提问于 2019-05-23 19:09:37
回答 1查看 207关注 0票数 1

在一个使用多绑定器kafka(2个代理)和rabbit(1个代理)的项目上升级到spring cloud stream 2.1后,我们面临着太多打开文件的问题。

打开的文件数量一直增长到操作系统定义的限制(redhat 7.3)。

我使用执行器端点监视: / actuator /metrics/process.files.open

代码语言:javascript
复制
{
"name": "process.files.open",
"description": "The open file descriptor count",
"baseUnit": "files",
"measurements": [
{
"statistic": "VALUE",
"value": 1686
}

]
}

使用spring cloud stream 2.0版本没有观察到这个问题,打开的文件数量稳定在80个文件左右。使用完全相同的以下版本:

代码语言:javascript
复制
 +- org.springframework.cloud:spring-cloud-stream-binder-kafka-core:jar:2.0.0.RELEASE:compile
[INFO] |  |  \- org.springframework.integration:spring-integration-kafka:jar:3.0.3.RELEASE:compile
[INFO] |  +- org.apache.kafka:kafka-clients:jar:1.0.2:compile
[INFO] |  |  +- org.lz4:lz4-java:jar:1.4:compile
[INFO] |  |  \- org.xerial.snappy:snappy-java:jar:1.1.4:compile
[INFO] |  \- org.springframework.kafka:spring-kafka:jar:2.1.10.RELEASE:compile

我怀疑升级到kafka-client 2.0.0是潜在的问题。

在第一次尝试中,我想用kafka-clients 1.0.2来尝试spring cloud stream 2.1,根据docs的说法,这是可能的,但我遇到了一个问题。下面是我的maven配置,其中包含了exclusion:

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-stream-binder-kafka</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-kafka</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>1.0.2</version>
</dependency>
<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
    <version>2.2.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.integration</groupId>
    <artifactId>spring-integration-kafka</artifactId>
    <version>3.1.0.RELEASE</version>
</dependency>

我遇到了以下错误:

代码语言:javascript
复制
java.lang.NoSuchMethodError: org.apache.kafka.clients.consumer.Consumer.poll(Ljava/time/Duration;)Lorg/apache/kafka/clients/consumer/ConsumerRecords;
    at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.pollAndInvoke(KafkaMessageListenerContainer.java:741)
    at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:698)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.base/java.lang.Thread.run(Thread.java:834)

是否知道打开的文件太多以及如何诊断?如何使用降级的kafka客户端进行测试?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2019-05-28 22:54:48

org.apache.kafka.clients.consumer.Consumer.poll(Ljava/time/Duration;)Lorg/apache/kafka/clients/consumer/ConsumerRecords;:

java.lang.NoSuchMethodError

spring-kafka 2.2.x需要2.0.1 kafka-clients或更高版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56273929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档