我有一个关于 spring 的问题。
我使用 Spring-Paho MqttPahoMessageDrivenChannelAdapter
与 MQTT 代理建立连接。这是java配置部分:
@Bean
@Description("mqtt inbound adapter: receives mqtt messages")
public MessageProducer mqttInboundAdapter() {
log.info("creating mqtt inbound adapter");
MqttPahoMessageDrivenChannelAdapter adapter =
new MqttPahoMessageDrivenChannelAdapter(
env.getProperty("mqtt.hostname")+":" +env.getProperty("mqtt.port"),
"myClient",
"#");
adapter.setCompletionTimeout(5000);
adapter.setConverter(new DefaultPahoMessageConverter());
adapter.setQos(1);
adapter.setOutputChannel(mqttInputChannel());
adapter.setErrorChannel(mqttErrorChannel());
return adapter;
}
当代理关闭并且未建立连接时,会抛出ConnectException
。太棒了,但我不仅想在日志中看到它的踪迹,还想收到一封警告电子邮件。
我希望可以借助mqttErrorChannel
来实现,但是ConnectException
is not the case错误 channel 的使用。有没有办法将 ConnectException 捕获到另一个 channel 或以其他方式?
提前谢谢您。
最佳答案
从 Spring Integration 4.2.2
开始,当我们失去连接或无法在订阅时连接时,会发出 MqttConnectionFailedEvent
。
例如,您可以使用 ApplicationEventListeningMessageProducer
捕获 ApplicationEvent
并将其发送到适当的 channel 。
请参阅引用手册中的更多信息:http://docs.spring.io/spring-integration/reference/html/mqtt.html
关于java - Spring MQTT : catch ConnectException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36066471/