1

I want to use MQTT in my project, but when I followed the instructions on https://docs.spring.io/spring-integration/reference/html/mqtt.html#mqtt-shared-client, I encountered this error. Can someone help me, please?

  @Bean
    public ClientManager<IMqttAsyncClient, MqttConnectionOptions> clientManager() {
        MqttConnectionOptions connectionOptions = new MqttConnectionOptions();
        connectionOptions.setServerURIs(new String[]{"tcp://localhost:1883"});
        connectionOptions.setConnectionTimeout(30000);
        connectionOptions.setMaxReconnectDelay(1000);
        connectionOptions.setAutomaticReconnect(true);
        connectionOptions.setCleanStart(true);
        Mqttv5ClientManager clientManager = new Mqttv5ClientManager(connectionOptions, "client-manager-client-id-v5");
        clientManager.setPersistence(new MqttDefaultFilePersistence());
        return clientManager;
    }

    @Bean
    public IntegrationFlow mqttInFlowTopic1(ClientManager<IMqttAsyncClient, MqttConnectionOptions> clientManager) {
        Mqttv5PahoMessageDrivenChannelAdapter messageProducer = new Mqttv5PahoMessageDrivenChannelAdapter(clientManager, "topic1");
        return IntegrationFlow.from(messageProducer)
            .channel(c -> c.executor(Executors.newCachedThreadPool()))
            .handle(message -> {
                MessageHeaders messageHeaders = message.getHeaders();
                String rs = new String((byte[]) message.getPayload());
                log.info("{}", messageHeaders);
                log.info("{}", rs);
            })
            .get();
    }
 Unable to register MBean [bean 'mqttInFlowTopic1.mqtt:inbound-channel-adapter#0'; defined in: 'class path resource [com/uncloud/demoemqx/MqttConfig.class]'; from source: 'bean method mqttInFlowTopic1'] with key 'mqttInFlowTopic1.mqtt:inbound-channel-adapter#0'
    at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:625) ~[spring-context-6.0.9.jar:6.0.9]
    at org.springframework.jmx.export.MBeanExporter.lambda$registerBeans$2(MBeanExporter.java:552) ~[spring-context-6.0.9.jar:6.0.9]
    at java.base/java.util.HashMap.forEach(HashMap.java:1421) ~[na:na]
    at org.springframework.jmx.export.MBeanExporter.registerBeans(MBeanExporter.java:552) ~[spring-context-6.0.9.jar:6.0.9]
    at org.springframework.jmx.export.MBeanExporter.afterSingletonsInstantiated(MBeanExporter.java:435) ~[spring-context-6.0.9.jar:6.0.9]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:984) ~[spring-beans-6.0.9.jar:6.0.9]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:941) ~[spring-context-6.0.9.jar:6.0.9]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:608) ~[spring-context-6.0.9.jar:6.0.9]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.1.0.jar:3.1.0]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:733) ~[spring-boot-3.1.0.jar:3.1.0]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:435) ~[spring-boot-3.1.0.jar:3.1.0]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:311) ~[spring-boot-3.1.0.jar:3.1.0]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1305) ~[spring-boot-3.1.0.jar:3.1.0]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1294) ~[spring-boot-3.1.0.jar:3.1.0]
    at com.uncloud.demoemqx.DemoEmqxApplication.main(DemoEmqxApplication.java:10) ~[main/:na]
Caused by: javax.management.MalformedObjectNameException: Invalid character `:' in value
    at java.management/javax.management.ObjectName.parseValue(ObjectName.java:979) ~[na:na]
    at java.management/javax.management.ObjectName.checkValue(ObjectName.java:1011) ~[na:na]
    at java.management/javax.management.ObjectName.construct(ObjectName.java:730) ~[na:na]
    at java.management/javax.management.ObjectName.<init>(ObjectName.java:1451) ~[na:na]
    at java.management/javax.management.ObjectName.getInstance(ObjectName.java:1357) ~[na:na]
    at org.springframework.jmx.support.ObjectNameManager.getInstance(ObjectNameManager.java:99) ~[spring-context-6.0.9.jar:6.0.9]
    at org.springframework.jmx.export.naming.MetadataNamingStrategy.getObjectName(MetadataNamingStrategy.java:136) ~[spring-context-6.0.9.jar:6.0.9]
    at org.springframework.boot.autoconfigure.jmx.ParentAwareNamingStrategy.getObjectName(ParentAwareNamingStrategy.java:66) ~[spring-boot-autoconfigure-3.1.0.jar:3.1.0]
    at org.springframework.jmx.export.MBeanExporter.getObjectName(MBeanExporter.java:755) ~[spring-context-6.0.9.jar:6.0.9]
    at org.springframework.jmx.export.MBeanExporter.registerBeanInstance(MBeanExporter.java:654) ~[spring-context-6.0.9.jar:6.0.9]
    at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:615) ~[spring-context-6.0.9.jar:6.0.9]
    ... 14 common frames omitted

Disconnected from the target VM, address: '127.0.0.1:38139', transport: 'socket'

Process finished with exit code 1

I encountered an error while using MQTT in my project

kaito
  • 21
  • 2

1 Answers1

1

When I add spring-integration-jmx, the error no longer occurs

implementation 'org.springframework.integration:spring-integration-jmx:6.1.1'
kaito
  • 21
  • 2