我正在使用带有wifi101模块(atwinc1500)的arduino zero(samd21)和来自@knolleary的库Imory pubsubclient库与IBM Bluemix代理进行MQTT连接。
我能够成功发布和订阅消息,但是,我需要对IOTF命令进行排队,以便在离线时接收发送到我设备的命令。我知道当设备离线时,连接到故障排队时,应该取消设置cleansession标志。
这是我的代码段:
while(!Org_Client.connected())
{
SerialUSB.println("Connecting to MQTT server");
if (Org_Client.connect(MQTT::Connect(Org_ClientID).unset_clean_session().set_auth(authMethod,token)))
{
SerialUSB.println("Connected to MQTT server");
Org_Client.subscribe(MQTT::Subscribe().add_topic(subtopic1,0));
Org_Client.subscribe(MQTT::Subscribe().add_topic(subtopic2,0));
Org_Client.subscribe(MQTT::Subscribe().add_topic(subtopic3,0));
Org_Client.subscribe(MQTT::Subscribe().add_topic(subtopic4,0));
}
}
// subtopic1,subtopic2,subtopic3,subtopic4是我的订阅主题,0对应于QOS 0。
但是,我的设备未按预期接收排队命令。我错过了什么吗?
答案 0 :(得分:0)
订阅QoS 0的消息不会排队,因为代理会在发布时尝试发送然后将其丢弃。
pubsub客户端可以订阅QoS 0& 1.尝试订阅QoS 1