私のアンドロイドアプリでPaho Javaクライアントライブラリを使用しています。コードは以下のとおりです。アンドロイドのpahoでmqttメッセージを公開する方法
MqttAndroidClient client_Panic = new MqttAndroidClient(this.getApplicationContext(), serverURL, CLIENT_ID);
try {
MqttConnectOptions options = new MqttConnectOptions();
options.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1);
options.setCleanSession(false);
options.setKeepAliveInterval(90);
options.setConnectionTimeout(100);
IMqttToken token = client_Panic.connect(options);
//Few callbacks
} catch (MqttException e) {
e.printStackTrace();
}
、出版メッセージ、それが正常に動作しますが、何らかの形で不完全さ
String msg = "messages";
MqttMessage message = new MqttMessage();
message.setPayload(msg.getBytes());
try {
client_Panic.publish(topic, message);
} catch (MqttException e) {
e.printStackTrace();
}
必要。私が必要とするのは、同じトピックを購読している他のクライアントが最後に保持したメッセージを取得する必要があるときです。私は彼らのドキュメントで検索そのために
、私は保持オプションを有効にするオプションを持っているので、setWillドキュメントごとに
protected void setWill(String topic,
MqttMessage msg,
int qos,
boolean retained)
を得ました。だから私は
options.setConnectionTimeout(100);
options.setWill(topic,null,2,true); // This place I added
IMqttToken token = client_Panic.connect(options);
と試みたが、options.setWill
を含む行にエラーjava.lang.IllegalArgumentException at org.eclipse.paho.client.mqttv3.MqttConnectOptions.validateWill
を得ました。
setWillは、アンドロイドでretained true
を有効にする正しい方法です。そうであれば、どのパラメータを提供する必要がありますか?それ以外の方法はアンドロイドで有効にする方法ですか? TIA。
ありがとうございます! –
@ hardillb hold onとすると、長さ0のメッセージを意味すると仮定して、メッセージをヌルメッセージとして設定できるはずです。 – ralight
@ralight、これは長さゼロのバイト配列を持つMessageオブジェクトですが、これはnullのMessageオブジェクトです。 – hardillb