【问题标题】:Issues with jmxMBeanExporter and duplicate kafkaStreamsTopology with Spring Cloud Streams Horsham/HoxtonjmxMBeanExporter 的问题和 Spring Cloud Streams Horsham/Hoxton 的重复 kafkaStreamsTopology
【发布时间】:2020-09-04 02:37:32
【问题描述】:

在将我的应用从 Spring Boot 2.1.X 更新到 2.3.X 并将 Spring Cloud Streams(kafka 流版本)从 2.1.2 更新到 3.0.8(Fishtown 到 Hoxton)时,我遇到了以下问题:

2020-09-03 14:21:00.059 ERROR [main] org.springframework.boot.SpringApplication -  - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jmxMBeanExporter' defined in class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/jmx/JmxEndpointAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.endpoint.jmx.JmxEndpointExporter]: Factory method 'jmxMBeanExporter' threw exception; nested exception is java.lang.IllegalStateException: Unable to map duplicate endpoint operations: [MBean call 'kafkaStreamsTopology'] to topologyEndpoint
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:655)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:635)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1336)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1176)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:556)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
    at com.myapp.MyAppApplicationKt.main(MyAppApplication.kt:33)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.endpoint.jmx.JmxEndpointExporter]: Factory method 'jmxMBeanExporter' threw exception; nested exception is java.lang.IllegalStateException: Unable to map duplicate endpoint operations: [MBean call 'kafkaStreamsTopology'] to topologyEndpoint
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:650)
    ... 20 common frames omitted
Caused by: java.lang.IllegalStateException: Unable to map duplicate endpoint operations: [MBean call 'kafkaStreamsTopology'] to topologyEndpoint
    at org.springframework.boot.actuate.endpoint.annotation.EndpointDiscoverer.assertNoDuplicateOperations(EndpointDiscoverer.java:234)
    at org.springframework.boot.actuate.endpoint.annotation.EndpointDiscoverer.convertToEndpoint(EndpointDiscoverer.java:201)
    at org.springframework.boot.actuate.endpoint.annotation.EndpointDiscoverer.convertToEndpoints(EndpointDiscoverer.java:182)
    at org.springframework.boot.actuate.endpoint.annotation.EndpointDiscoverer.discoverEndpoints(EndpointDiscoverer.java:125)
    at org.springframework.boot.actuate.endpoint.annotation.EndpointDiscoverer.getEndpoints(EndpointDiscoverer.java:117)
    at org.springframework.boot.actuate.autoconfigure.endpoint.jmx.JmxEndpointAutoConfiguration.jmxMBeanExporter(JmxEndpointAutoConfiguration.java:95)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
    ... 21 common frames omitted

虽然我在核心应用程序上删除了@ComponentScan(...),但上述问题却导致了“缺少bean!”的问题。问题,因为我不再包含 commons 包中的 bean。

是什么导致了这个错误?我该如何解决?

【问题讨论】:

    标签: spring-boot spring-cloud-stream


    【解决方案1】:

    在搜索jmxMBeanExporter、损坏的@ComponentScan(...) 和/或kafkaStreamsTopology 后发现没有运气。我专注于库更改并开始阅读 Spring Cloud Stream Github 问题。

    我的问题通过comment from a library author解决了

    ...我刚刚在 IntelliJ 上的另一个应用程序(使用 Hoxton.BUILD-SNAPSHOT)上遇到了这个确切的问题,并且能够通过在 IDE 的运行配置文件中禁用 JMX 代理来解决这个问题。请尝试将其作为解决方案。我现在关闭这个问题。如果需要,请随时重新打开。

    为 IntelliJ 构建运行禁用 Enable JMX agent 果然解决了这个问题。

    【讨论】:

    • 有谁知道这个问题的根本原因是什么?
    • 为这个答案添加到 SEO 中,这解决了我的问题。这是我得到的错误:“需要一个找不到的 'javax.management.MBeanServer' 类型的 bean”
    猜你喜欢
    • 2020-04-08
    • 2021-06-07
    • 2021-02-23
    • 2016-09-29
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 2020-08-10
    相关资源
    最近更新 更多