2017-10-21 5 views
0

私たちはmqttブローカにメッセージを公開する休憩サービスエンドポイント(Spring MVC)を持っています。 MqttClientをキャッシュすることで、すべての要求に対してキャッシュを作成する必要がなくなります。Eclipse Paho MqttClientオブジェクトプール

最適なオプションは何ですか?各ThreadLocalオブジェクトにMqttClientを格納しますか? Apache Commons Poolなどのオブジェクトプールを使用しますか?

これに関するアドバイスをいただければ幸いです。また、既にPaho MqttClientのプール実装が利用可能な場合は?

答えて

0

Paho mqttクライアントはステートフルクライアントです。言い換えれば、ブローカに接続するとき、TCP接続は、いくつかの側が切断するか、またはネットワーク内にいくつかの醜いエラーがあるまで生きています。

スレッド(休憩クライアント)ごとに新しいmqttクライアントを作成するのは良い考えではありません。

あなたはSpringを使用していますが、単一のメソッドsend()@Beanオブジェクト(シングルトンBean)を作成できます。ここで、必要な数のクライアントを作成できます。おそらく1人のクライアントはOKですが、予想される負荷は何か分かりません。その後、あなたから@Controllersend()メソッドを実行することができます...

また、同期に注意してください。すべてのhttpリクエストは「新しい」スレッドの一部であり、1つのmqtt beanしか持っていません。

+0

私はMqttClientがステートフルなので、オブジェクトプーリングがより良い選択肢であると感じています。誰かがMqttClientオブジェクトのオブジェクトプーリングをやっているのかどうか知りたがりましたか? –

関連する問題