Я работаю над приложением для Android с клиентом eclipse paho mqtt и брокером ActveMQ.Я уже установил для setCleanSession значение false, но когда я смотрю на веб-консоль activeMQ, клиент все еще отображается в списке активных недолговечных подписчиков тем, есть ли способ решить эту проблему?
Клиент Android:
private void initMqtt() {
try {
mqttClient = new MqttClient(
HttpUrlManager.MQURL,
Build.SERIAL,
new MemoryPersistence()
);
mqttClient.setCallback(this);
mqttOptions = new MqttConnectOptions();
mqttOptions.setCleanSession(false);
mqttOptions.setConnectionTimeout(10);
mqttOptions.setKeepAliveInterval(10);
mqttClient.setCallback(this);
mqttClient.connect();
mqttClient.subscribe(MQTT_TOPIC_TEST,2);
} catch (Exception e) {
e.printStackTrace();
}
Брокер:
public void sendMessage(Session session, MessageProducer producer) throws Exception {
String message = "message" + (++messageCount) + ",time:" + LocalDateTime.now();
TextMessage text = session.createTextMessage(message);
System.out.println(message);
producer.send(text);
}
public App() {
ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, BROKER_URL);
try {
connection = factory.createConnection();
connection.start();
session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
destination = session.createTopic(DESTINATION);
producer= session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
} catch (JMSException e) {
e.printStackTrace();
}
}
public void run() throws Exception {
try {
sendMessage(session, producer);
session.commit();
} catch (Exception e) {
e.print();
}
}
public static void main(String[] args) throws Exception {
App a = new App();
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
try {
a.run();
} catch (Exception e) {
e.printStackTrace();
}
}
}, 100,5000);
}
}