我有一个关于春天的问题。
我使用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使用错误渠道。有没有办法将ConnectException捕获到另一个通道或以其他方式?
提前谢谢。
答案 0 :(得分:0)
从Spring Integration 4.2.2
开始,当我们丢失连接或无法在订阅时连接时,会发出MqttConnectionFailedEvent
。
您可以使用ApplicationEvent
抓住ApplicationEventListeningMessageProducer
并将其发送到相应的频道。
请参阅“参考手册”中的更多信息:http://docs.spring.io/spring-integration/reference/html/mqtt.html