Java MQTT的可靠性?
我正在开发一个Uber应用程序风格(android)的客户端/驱动程序应用程序,他将在客户端和驱动程序之间进行通信 我将RabbitMQ用于MQTT。和泛美卫生组织安卓图书馆Java MQTT的可靠性?,java,android,rabbitmq,mqtt,paho,Java,Android,Rabbitmq,Mqtt,Paho,我正在开发一个Uber应用程序风格(android)的客户端/驱动程序应用程序,他将在客户端和驱动程序之间进行通信 我将RabbitMQ用于MQTT。和泛美卫生组织安卓图书馆 implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5' implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1' 例如,通信是: 向驾驶员发送行程请
implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5'
implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'
例如,通信是:
向驾驶员发送行程请求,
接受司机的驾驶,
由驾驶员或客户取消行程,
为了进行客户机/驱动程序通信,我使用了MQTT协议
我遇到的问题是,有时信息无法到达收件人,比如取消比赛。即使我使用QOS=2订阅一个主题或发送到主题,也是如此
不使用此协议传递(或发送)消息是正常行为吗
我想知道MQTT技术的选择
Voici avec je me接头:
private MqttConnectOptions createMqttConnectOptions() {
mqttConnectOptions = new MqttConnectOptions();
mqttConnectOptions.setAutomaticReconnect(true);
mqttConnectOptions.setCleanSession(false);
mqttConnectOptions.setKeepAliveInterval(0);
mqttConnectOptions.setConnectionTimeout(0);
mqttConnectOptions.setServerURIs(MQTT_SERVERS_URL);
mqttConnectOptions.setUserName(MQTT_USERNAME);
mqttConnectOptions.setPassword(MQTT_PASSWORD.toCharArray());
return mqttConnectOptions;
}
private MqttAndroidClient createMqttAndroidClient(String serveurUri) {
return mqttAndroidClient = new MqttAndroidClient(this, serveurUri, id, new MemoryPersistence());
}
public void connect(MqttConnectOptions mqttConnectOptions) {
try {
if (!mqttAndroidClient.isConnected()) {
final IMqttToken token = mqttAndroidClient.connect(mqttConnectOptions);
token.setActionCallback(new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
DisconnectedBufferOptions disconnectedBufferOptions = new DisconnectedBufferOptions();
disconnectedBufferOptions.setBufferEnabled(true);
disconnectedBufferOptions.setBufferSize(1000);
disconnectedBufferOptions.setPersistBuffer(false);
disconnectedBufferOptions.setDeleteOldestMessages(true);
mqttAndroidClient.setBufferOpts(disconnectedBufferOptions);
subscribeToTopic(2, Constants.MQTT_TOPIC_DRIVER_REQUEST + mqttAndroidClient.getClientId());
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
Log.e(TAG, "Failed to connect to: " + mqttAndroidClient.getServerURI());
}
});
}
} catch (MqttException e) {
Log.e(TAG, "At connect method", e);
}
}