Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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 在Spring引导集成中,在MQTTPAHomeMessageHandler和MQTTPAHomeMessageDrivenChannelAdapter之间共享相同的MQTT客户端实例_Java_Spring Boot_Spring Integration Mqtt - Fatal编程技术网

Java 在Spring引导集成中,在MQTTPAHomeMessageHandler和MQTTPAHomeMessageDrivenChannelAdapter之间共享相同的MQTT客户端实例

Java 在Spring引导集成中,在MQTTPAHomeMessageHandler和MQTTPAHomeMessageDrivenChannelAdapter之间共享相同的MQTT客户端实例,java,spring-boot,spring-integration-mqtt,Java,Spring Boot,Spring Integration Mqtt,假设我有一个Spring引导应用程序,它需要实例化几个MQTT客户机(#~10^4),以便将物理设备虚拟化到代理(MOSQUITO)中。它们中的每一个都有一个唯一的客户端ID,以便从专用主题获取/发送消息 我试图在Spring Boot(Spring-Integration-MQTT-5.1.6.RELEASE)中使用MQTT入站/出站集成流来实现这一点,但每个流(MqttPahoMessageDrivenChannelAdapter/MqttPahoMessageHandler)都实例化自己的

假设我有一个Spring引导应用程序,它需要实例化几个MQTT客户机(#~10^4),以便将物理设备虚拟化到代理(MOSQUITO)中。它们中的每一个都有一个唯一的客户端ID,以便从专用主题获取/发送消息

我试图在Spring Boot(Spring-Integration-MQTT-5.1.6.RELEASE)中使用MQTT入站/出站集成流来实现这一点,但每个流(
MqttPahoMessageDrivenChannelAdapter/MqttPahoMessageHandler
)都实例化自己的客户机来管理传入/传出消息

我关注的是:

  • 根据定义,由于Spring Boot MQTT集成流的结构,我不能只使用一个客户机来处理输入/输出流
  • 它可能效率不高,因为我需要两个不同的客户端,因此需要两倍的资源
  • 我不能为每个“逻辑”通道使用相同的客户机ID,因为我使用的是两个不同的MQTT客户机,并且正如您所知,如果您尝试使用相同的客户机ID连接到同一个代理,最旧的代理会断开连接。因此,为了发送和接收消息,我需要对每个逻辑输入/输出流进行不同的配置(以及服务器端授权)
  • Spring Boot应用程序生成2倍于服务器的连接,因此服务器的大小必须能够接收2倍于传入连接的连接,这可能是一个问题
我的总体想法是重新实现
MqttPahoMessageDrivenChannelAdapter
MqttPahoMessageHandler
,以便让它们为相同的客户机ID共享相同的MqttClient实例,我必须在适配器和处理程序中重新实现连接/断开连接/订阅方法,以使它们更加健壮。另外,我必须使用一个专用的客户端工厂,以便以相同的客户端ID返回相同的客户端(这是最简单的部分)

现在的问题是:这种方法正确吗?我是不是想强奸春靴

我发现的唯一替代方法是直接实现原始MQTTClient,管理它们的整个生命周期。这是可行的,但我正在重新发明轮子,我没有利用Spring Boot的消息传递设计模式