Java 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' 例如,通信是: 向驾驶员发送行程请

我正在开发一个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'
例如,通信是: 向驾驶员发送行程请求, 接受司机的驾驶, 由驾驶员或客户取消行程,

为了进行客户机/驱动程序通信,我使用了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);
        }
   }