Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring集成-MQTT订阅问题_Spring_Spring Boot_Spring Integration_Mqtt - Fatal编程技术网

Spring集成-MQTT订阅问题

Spring集成-MQTT订阅问题,spring,spring-boot,spring-integration,mqtt,Spring,Spring Boot,Spring Integration,Mqtt,我正在尝试实现Spring与MQTT的集成。我使用Mosquitto作为MQTT代理。参考以下提供的文件。我已经创建了一个项目并添加了所有必需的jar文件。当我执行MQTTJavaApplication时 public class MqttJavaApplication { public static void main(String[] args) { new SpringApplicationBuilder(MqttJavaApplication.clas

我正在尝试实现Spring与MQTT的集成。我使用Mosquitto作为MQTT代理。参考以下提供的文件。我已经创建了一个项目并添加了所有必需的jar文件。当我执行
MQTTJavaApplication

public class MqttJavaApplication {

     public static void main(String[] args) {
            new SpringApplicationBuilder(MqttJavaApplication.class)
                    .web(false)
                    .run(args);
        }

        @Bean
        public MessageChannel mqttInputChannel() {
            return new DirectChannel();
        }

        @Bean
        public MqttPahoMessageDrivenChannelAdapter inbound() {
            MqttPahoMessageDrivenChannelAdapter adapter =
                    new MqttPahoMessageDrivenChannelAdapter("tcp://localhost:1883", "test",
                                                     "sample");
            adapter.setCompletionTimeout(5000);
            adapter.setConverter(new DefaultPahoMessageConverter());
            adapter.setQos(1);
            adapter.setOutputChannel(mqttInputChannel());
            return adapter;
        }

        @Bean
        @ServiceActivator(inputChannel = "mqttInputChannel")
        public MessageHandler handler() {
            return new MessageHandler() {

                @Override
                public void handleMessage(Message<?> message) {
                    System.out.println("Test##########"+message.getPayload());
                }

            };
        }
}
添加@SpringBootApplication注释后,请在下面查找堆栈跟踪

[2015-11-26 10:55:46.571] boot - 5524  INFO [main] --- AnnotationConfigApplicationContext: Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@562d4b: startup date [Thu Nov 26 10:55:46 IST 2015]; root of context hierarchy
[2015-11-26 10:55:46.572]启动-5524警告[main]--注释ConfigApplicationContext:从处理ContextClosedEvent的ApplicationListener引发的异常 java.lang.IllegalStateException:ApplicationEventMulticaster未初始化-通过上下文org.springframework.context.annotation在多播事件之前调用“刷新”。AnnotationConfigApplicationContext@562d4b:启动日期【2015年11月26日星期四10:55:46】;上下文层次结构的根 位于org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:337) 位于org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:324) 位于org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1025) 位于org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:988) 位于org.springframework.boot.SpringApplication.run(SpringApplication.java:329) 位于org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:130) 位于com.igate.MqttJavaApplication.main(MqttJavaApplication.java:32) [2015-11-26 10:55:46.594]启动-5524警告[main]--注释ConfigApplicationContext:上下文关闭时从LifecycleProcessor引发的异常 java.lang.IllegalStateException:LifecycleProcessor未初始化-在通过以下上下文调用生命周期方法之前调用“刷新”:org.springframework.context.annotation。AnnotationConfigApplicationContext@562d4b:启动日期【2015年11月26日星期四10:55:46】;上下文层次结构的根 位于org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:350) 位于org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1033) 位于org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:988) 位于org.springframework.boot.SpringApplication.run(SpringApplication.java:329) 位于org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:130) 位于com.igate.MqttJavaApplication.main(MqttJavaApplication.java:32) 线程“main”java.lang.IllegalStateException中的异常:必须至少指定一个基本包 位于org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:121) 位于org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:214) 位于org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:149) 位于org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:135) 位于org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:260) 位于org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:203) 位于org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:617) 位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:446) 位于org.springframework.boot.SpringApplication.refresh(SpringApplication.java:648) 位于org.springframework.boot.SpringApplication.run(SpringApplication.java:311) 位于org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:130)
在com.igate.MqttJavaApplication.main(MqttJavaApplication.java:32)

是的!没错。如果没有
@SpringBootApplication
,我会有相同的堆栈跟踪


Spring Boot包括负责订阅者和任务调度器的集成自动配置。

是的!没错。如果没有
@SpringBootApplication
,我会有相同的堆栈跟踪


Spring Boot的内容包括负责订阅者和任务调度器bean填充的
IntegrationAutoConfiguration

回答这个问题可能太晚了,但希望对初学者有所帮助

几件事:-

  • 在主类中声明
    @SpringBootApplication
    ,让项目知道它是一个springboot应用程序
  • 对于第二个错误,定义spring boot将引用的配置文件等项目的基本包。为此,在类级别添加
    @ComponentScan({“package name})
示例:-

@SpringBootApplication
@ComponentScan({"package-name"})
public class Main {
...
}

回答这个问题可能太晚了,但希望能对初学者有所帮助

几件事:-

  • 在主类中声明
    @SpringBootApplication
    ,让项目知道它是一个springboot应用程序
  • 对于第二个错误,定义spring boot将引用的配置文件等项目的基本包。为此,在类级别添加
    @ComponentScan({“package name})
示例:-

@SpringBootApplication
@ComponentScan({"package-name"})
public class Main {
...
}

对不起,你真的有
@SpringBootApplication
?我是springs集成的新手。请提供一个将springs与mqtt集成的示例项目(如果可用)。对不起,您真的有
@SpringBootApplication
?我是springs集成的新手。请提供一个将springs与mqtt集成的示例项目(如果可用)。您好,谢谢您的回复。我添加了@springboot应用程序ann