【问题标题】:spring mqtt: catch ConnectExceptionspring mqtt:捕获 ConnectException
【发布时间】:2016-07-04 03:36:50
【问题描述】:

我有一个关于春天的问题。

我使用 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 捕获到另一个通道或以其他方式?

提前谢谢你。

【问题讨论】:

    标签: java spring exception-handling spring-integration mqtt


    【解决方案1】:

    从 Spring Integration 4.2.2 开始,MqttConnectionFailedEvent 在我们失去连接或无法订阅时发出。

    您可以使用ApplicationEventListeningMessageProducer 捕获ApplicationEvent,并将其发送到适当的频道。

    在参考手册中查看更多信息:http://docs.spring.io/spring-integration/reference/html/mqtt.html

    【讨论】:

      猜你喜欢
      • 2019-09-14
      • 2017-08-02
      • 2014-07-15
      • 1970-01-01
      • 2015-02-15
      • 2019-12-17
      • 1970-01-01
      • 2012-07-04
      • 1970-01-01
      相关资源
      最近更新 更多