Eclipse Paho MqttClient对象池

Eclipse Paho MqttClient对象池,mqtt,paho,Mqtt,Paho,我们有一个rest服务端点(SpringMVC),它将消息发布到mqtt代理。 我们计划缓存MqttClient,这样就不必为每个请求创建它 最好的选择是什么?是否在每个ThreadLocal对象中存储MqttClient? 是否使用对象池,如Apache Commons池 如果您对此有任何建议,我们将不胜感激。另外,如果已经有Paho mqtt客户端的池实现可用,则Paho mqtt客户端是一个状态完整的客户端。换句话说,当它连接到代理时,TCP连接一直处于活动状态,直到某些方面决定断开连接,

我们有一个rest服务端点(SpringMVC),它将消息发布到mqtt代理。 我们计划缓存MqttClient,这样就不必为每个请求创建它

最好的选择是什么?是否在每个ThreadLocal对象中存储MqttClient? 是否使用对象池,如Apache Commons池


如果您对此有任何建议,我们将不胜感激。另外,如果已经有Paho mqtt客户端的池实现可用,则Paho mqtt客户端是一个状态完整的客户端。换句话说,当它连接到代理时,TCP连接一直处于活动状态,直到某些方面决定断开连接,或者网络中出现一些严重错误

IMO说,为每个线程(rest客户机)创建一个新的mqtt客户机不是一个好主意

如果您使用的是Spring,那么您可以使用单个方法
send()
创建
@Bean
对象(Singletonbean)。在那里,您可以创建任意数量的客户端。可能一个客户端是可以的,但我不知道预期的负载是什么。然后,您可以从
@Controller
执行
send()
方法


另外,要注意同步。每个http请求都是“新”线程的一部分,您只有一个mqtt bean。

Paho mqtt客户机是一个状态完整的客户机。换句话说,当它连接到代理时,TCP连接一直处于活动状态,直到某些方面决定断开连接,或者网络中出现一些严重错误

IMO说,为每个线程(rest客户机)创建一个新的mqtt客户机不是一个好主意

如果您使用的是Spring,那么您可以使用单个方法
send()
创建
@Bean
对象(Singletonbean)。在那里,您可以创建任意数量的客户端。可能一个客户端是可以的,但我不知道预期的负载是什么。然后,您可以从
@Controller
执行
send()
方法


另外,要注意同步。每个http请求都是“新”线程的一部分,您只有一个mqtt bean。

我知道mqtt客户端是有状态的,因此觉得对象池是一个更好的选择。想知道是否有人做过MqttClient对象的对象池和任何陷阱?我知道MqttClient是有状态的,因此觉得对象池是一个更好的选择。想知道是否有人做过MqttClient对象的对象池和任何GOTCHA?