spring-integration-mqtt 查看是否连接上mqtt服务器 代码
时间: 2023-09-06 12:14:36 浏览: 138
您可以通过 Spring Integration MQTT 提供的 `MqttPahoMessageDrivenChannelAdapter` 组件来检查是否连接到 MQTT 服务器。以下是一个示例:
```java
@Configuration
@EnableIntegration
public class MqttConfiguration {
@Value("${mqtt.broker.url}")
private String brokerUrl;
@Value("${mqtt.client.id}")
private String clientId;
@Value("${mqtt.topic}")
private String topic;
@Bean
public MessageChannel mqttInputChannel() {
return new DirectChannel();
}
@Bean
public MqttPahoClientFactory mqttClientFactory() {
DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory();
MqttConnectOptions options = new MqttConnectOptions();
options.setServerURIs(new String[]{brokerUrl});
factory.setConnectionOptions(options);
return factory;
}
@Bean
public MessageProducer inbound() {
MqttPahoMessageDrivenChannelAdapter adapter =
new MqttPahoMessageDrivenChannelAdapter(clientId, mqttClientFactory(), topic);
adapter.setCompletionTimeout(5000);
adapter.setConverter(new DefaultPahoMessageConverter());
adapter.setQos(1);
adapter.setOutputChannel(mqttInputChannel());
return adapter;
}
@Bean
public IntegrationFlow mqttInFlow() {
return IntegrationFlows.from(mqttInputChannel())
.handle(new MessageHandler() {
@Override
public void handleMessage(Message<?> message) throws MessagingException {
// Handle received message
}
})
.get();
}
@Bean
public ApplicationRunner runner() {
return args -> {
MqttPahoClientFactory factory = mqttClientFactory();
IMqttAsyncClient client = factory.createMqttClient();
IMqttToken token = client.connect();
token.waitForCompletion();
if (token.isComplete() && token.getException() == null) {
System.out.println("Connected to MQTT broker: " + brokerUrl);
} else {
System.out.println("Failed to connect to MQTT broker: " + brokerUrl);
}
client.disconnect();
};
}
}
```
在上面的代码中,我们创建了一个 `MqttPahoMessageDrivenChannelAdapter` 对象,并将其配置为连接到 MQTT 服务器、订阅指定的主题,并将收到的消息发送到 `mqttInputChannel` 消息通道。我们还创建了一个 `ApplicationRunner` 对象,在应用程序启动时尝试连接到 MQTT 服务器,并在控制台上输出连接结果。通过查看控制台输出,您可以确定是否成功连接到 MQTT 服务器。
阅读全文