Eclipse Paho MqttClient对象池

时间:2017-10-21 04:07:04

标签: mqtt paho

我们有一个休息服务端点(Spring MVC),它将消息发布到mqtt代理。 我们计划缓存MqttClient,以便我们不必为每个请求创建它。

什么是最佳选择?将MqttClient存储在每个ThreadLocal对象中? 使用Apache Commons Pool等对象池?

对此有任何建议将不胜感激。此外,如果已经有Paho MqttClient的池实现可用吗?

1 个答案:

答案 0 :(得分:0)

Paho mqtt客户端是一个有状态的客户端。换句话说,当它连接到代理时,TCP连接是有效的,直到某些方面决定断开连接或网络中存在一些丑陋的错误。

为每个线程(休息客户端)创建一个新的mqtt客户端并不是一个好主意,IMO。

您正在使用Spring,也许您可​​以使用单个方法@Bean创建send()对象(单例bean)。在那里,您可以根据需要创建任意数量的客户端。可能一个客户端没问题,但我不知道预期的负载是多少。然后,您@Controller可以执行send()方法...

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