Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MQTTPAHomeMessageHandler和重新连接速率管理_Java_Spring_Spring Integration_Mqtt - Fatal编程技术网

Java MQTTPAHomeMessageHandler和重新连接速率管理

Java MQTTPAHomeMessageHandler和重新连接速率管理,java,spring,spring-integration,mqtt,Java,Spring,Spring Integration,Mqtt,我们注意到一些使用Spring与MQTT集成的应用程序在短时间间隔内经历了大量的重新连接尝试,导致我们使用的代理出现问题。我认为问题的一部分在于MQTTPAHomeMessageHandler似乎没有使用任何连接退避算法。对于入站连接,MqttPahoMessageDrivenChannelAdapter似乎使用了一个常量回退(例如recoveryInterval),我认为Paho的较新版本(>=1.1)支持指数回退。使用MQTTPAHomeMessageHandler,似乎每个消息发布都会导致

我们注意到一些使用Spring与MQTT集成的应用程序在短时间间隔内经历了大量的重新连接尝试,导致我们使用的代理出现问题。我认为问题的一部分在于MQTTPAHomeMessageHandler似乎没有使用任何连接退避算法。对于入站连接,MqttPahoMessageDrivenChannelAdapter似乎使用了一个常量回退(例如recoveryInterval),我认为Paho的较新版本(>=1.1)支持指数回退。使用MQTTPAHomeMessageHandler,似乎每个消息发布都会导致新的连接尝试(如果尚未连接)

在我们的环境中,我们看到了以下场景:

  • 我们的代理在短时间内接收大量连接,导致MQTT will消息排队
  • 队列最终将达到峰值容量
  • MQTT连接将不会成功:
  • TCP连接已设置
  • 已发送带有will的MQTT CONNECT消息
  • 代理尝试将will消息排队,但失败
  • 代理终止TCP连接
  • 当这种情况发生时,如果我们试图发送大量出站消息,我们会看到来自MQTTPAHomeMessageHandler+Paho的大量连接尝试

    是否存在出站连接(MQTTPAHomeMessageHandler)不使用回退算法进行重新连接的原因,类似于入站连接(MQTTPAHomeMessageDrivenChannelAdapter)或Paho使用的算法


    我想修改此行为,但首先想了解这是否是有意的设计决策?

    所有Spring集成出站端点都将尝试按需连接


    您可以添加一个选项来防止出现这种情况。当检测到可配置数量的故障时,断路器断开,后续尝试将快速失败。一段时间后,断路器半开,允许进行尝试;如果失败,它会再次打开。

    我想这个问题最好直接放在项目上(通过他们的github页面?),而不是放在这里,因为这里可能是讨论您正在考虑的更改的正确场所。我根据这里的说明在这里发布:我将回顾一下。谢谢