【发布时间】:2017-06-24 13:25:29
【问题描述】:
我正在使用 PAHO mqtt 在 Spring Maven 中创建一个 webapp。并且有两种实现mqtt的方法,一种是Spring Mqtt集成,第二种是创建连接对象和连接/断开连接的通用方法,但是它们之间的方便和可靠有什么区别。
现在我正在使用 Spring Mqtt Integration 实现订阅,但无法理解它,任何人都可以建议一些好的简单教程。
谢谢!
【问题讨论】:
我正在使用 PAHO mqtt 在 Spring Maven 中创建一个 webapp。并且有两种实现mqtt的方法,一种是Spring Mqtt集成,第二种是创建连接对象和连接/断开连接的通用方法,但是它们之间的方便和可靠有什么区别。
现在我正在使用 Spring Mqtt Integration 实现订阅,但无法理解它,任何人都可以建议一些好的简单教程。
谢谢!
【问题讨论】:
请参阅Spring Integration MQTT Sample Spring Boot App。
从stdIn读取通过MQTT发送数据,接收数据并记录它。
// publisher
@Bean
public IntegrationFlow mqttOutFlow() {
return IntegrationFlows.from(CharacterStreamReadingMessageSource.stdin(),
e -> e.poller(Pollers.fixedDelay(1000)))
.transform(p -> p + " sent to MQTT")
.handle(mqttOutbound())
.get();
}
@Bean
public MessageHandler mqttOutbound() {
MqttPahoMessageHandler messageHandler = new MqttPahoMessageHandler("siSamplePublisher", mqttClientFactory());
messageHandler.setAsync(true);
messageHandler.setDefaultTopic("siSampleTopic");
return messageHandler;
}
// consumer
@Bean
public IntegrationFlow mqttInFlow() {
return IntegrationFlows.from(mqttInbound())
.transform(p -> p + ", received from MQTT")
.handle(logger())
.get();
}
private LoggingHandler logger() {
LoggingHandler loggingHandler = new LoggingHandler("INFO");
loggingHandler.setLoggerName("siSample");
return loggingHandler;
}
@Bean
public MessageProducerSupport mqttInbound() {
MqttPahoMessageDrivenChannelAdapter adapter = new MqttPahoMessageDrivenChannelAdapter("siSampleConsumer",
mqttClientFactory(), "siSampleTopic");
adapter.setCompletionTimeout(5000);
adapter.setConverter(new DefaultPahoMessageConverter());
adapter.setQos(1);
return adapter;
}
【讨论】: