【问题标题】:App is subscribed to MQTT topic but is missing some messages published to that topic应用订阅了 MQTT 主题,但缺少一些发布到该主题的消息
【发布时间】:2020-11-24 00:39:26
【问题描述】:

我在 Android 上使用 AWS IoT。我想获得特定事物的影子状态。这是代码:

mqttManager = new AWSIotMqttManager(clientId, CUSTOMER_SPECIFIC_ENDPOINT);

String subTopic = "$aws/things/<thingName>/shadow/get/accepted";
mqttManager.subscribeToTopic(subTopic, AWSIotMqttQos.QOS0, new AWSIotMqttNewMessageCallback() {
                        @Override
                        public void onMessageArrived(String topic, byte[] data) {
                            // do something
                        });

String pubTopic = "$aws/things/<thingName>/shadow/get";                        
mqttManager.publishString("", pubTopic, AWSIotMqttQos.QOS0);

奇怪的是,它运行一次,然后我重新运行代码,它不起作用,我再次运行它,它运行。这是为什么呢?

【问题讨论】:

    标签: android amazon-web-services aws-iot


    【解决方案1】:

    问题是客户端在订阅完成之前发布。幸运的是,方法 subscribeToTopic 接受另一个回调,该回调在订阅完成时返回。那时我们可以安全地发布。代码如下所示:

    String subTopic = "$aws/things/<thingName>/shadow/get/accepted";
    mqttManager.subscribeToTopic(subTopic, 
                            AWSIotMqttQos.QOS0, 
                            new AWSIotMqttSubscriptionStatusCallback() {
                            
                                @Override
                                public void onSuccess() {
                                    String pubTopic = "$aws/things/<thingName>/shadow/get";                        
                                    mqttManager.publishString("", pubTopic, AWSIotMqttQos.QOS0);
                                }
    
                                @Override
                                public void onFailure(Throwable exception) {
    
                                }
                                
                            },
                            new AWSIotMqttNewMessageCallback() {
                                @Override
                                public void onMessageArrived(String topic, byte[] data) {
                                    // do something
                                } 
                            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 2020-06-24
      • 2017-04-14
      • 1970-01-01
      相关资源
      最近更新 更多