Spring集成-MQTT订阅问题
我正在尝试实现Spring与MQTT的集成。我使用Mosquitto作为MQTT代理。参考以下提供的文件。我已经创建了一个项目并添加了所有必需的jar文件。当我执行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
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
。回答这个问题可能太晚了,但希望对初学者有所帮助
几件事:-
- 在主类中声明
,让项目知道它是一个springboot应用程序@SpringBootApplication
- 对于第二个错误,定义spring boot将引用的配置文件等项目的基本包。为此,在类级别添加
@ComponentScan({“package name})
@SpringBootApplication
@ComponentScan({"package-name"})
public class Main {
...
}
回答这个问题可能太晚了,但希望能对初学者有所帮助 几件事:-
- 在主类中声明
,让项目知道它是一个springboot应用程序@SpringBootApplication
- 对于第二个错误,定义spring boot将引用的配置文件等项目的基本包。为此,在类级别添加
@ComponentScan({“package name})
@SpringBootApplication
@ComponentScan({"package-name"})
public class Main {
...
}
对不起,你真的有
@SpringBootApplication
?我是springs集成的新手。请提供一个将springs与mqtt集成的示例项目(如果可用)。对不起,您真的有@SpringBootApplication
?我是springs集成的新手。请提供一个将springs与mqtt集成的示例项目(如果可用)。您好,谢谢您的回复。我添加了@springboot应用程序ann