java - 设置唯一的 bean 名称 javax.management.InstanceAlreadyExistsException

标签 java spring spring-amqp spring-jmx

当我使用 Spring AMQP 部署 2 个包时,我在以下代码中收到 JMX 错误:

    @Bean
    public CachingConnectionFactory connectionFactory() {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory(HOST);
        connectionFactory.setBeanName("Test_123");
        return connectionFactory;
    }

我错误引起:javax.management.InstanceAlreadyExistsException:org.springframework.amqp.rabbit.connection:name=connectionFactory,type=CachingConnectionFactory

完整错误堆栈: https://pastebin.com/CdU3epMz

如何为connectionFactory设置唯一的名称?

编辑:

我还尝试将 application.properties 放置在 src/main/java/resources 下,此配置:

spring.jmx.enabled=false
spring.datasource.jmx-enabled=false
spring.jmx.default-domain=ssds # JMX domain name.
spring.jmx.server=apiServer # MBeanServer bean name.
management.metrics.export.jmx.domain=metccriddcs # Metrics JMX domain name.
management.metrics.export.jmx.enabled=false # Whether exporting of metrics to JMX is enabled.
management.endpoints.jmx.exposure.exclude=*

但我遇到了同样的错误。

最佳答案

解决办法:

... implements ObjectNamingStrategy {

    @Override
    public ObjectName getObjectName(Object managedBean, String beanKey) throws MalformedObjectNameException {
        Class managedClass = AopUtils.getTargetClass(managedBean);
        String domain = ClassUtils.getPackageName(managedClass);

        Hashtable<String, String> properties = new Hashtable<>();
        properties.put("type", ClassUtils.getShortName(managedClass));
        properties.put("name", "asdsdsd");
        // ensure the application name is included as a property in the object name
        properties.put("app", "api");
        return ObjectNameManager.getInstance(domain, properties);
    }

}

关于java - 设置唯一的 bean 名称 javax.management.InstanceAlreadyExistsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51230653/

相关文章:

java - Spring Listener Container - 事务管理器 - Spring Retry - 多个事务之间

java - 是否可以将运行时未知的 Avro 消息转换为特定的 Java 类

java - 如何使用 JpaItemWriter 更新现有实体?

java - 如何找到对象分配的总内存

java - Spring-Hibernate - 没有找到当前线程的 session

spring - spring-data-redis 是否支持 jedis 分片池?

rabbitmq - 使用 args 创建 SpringAMQP 队列

java - 与@XmlTransient相反

java - 添加 JPA 后 Spring Boot 关闭

Spring不会在bean初始化时中止 Bootstrap 启动组件扫描时出错?