【发布时间】:2017-07-25 22:20:12
【问题描述】:
我正在开发一个 REST API 接口,在某些部分,它必须通过 Paho 客户端库与 MQTT 交互。按照设计,Paho 客户端对于收到的每条消息只能进行一次回调:
mqttClient = new MqttClient(MQTT_ADDRESS, MQTT_CLIENT_ID);
mqttClient.setCallback(new MqttCallbackImpl());
...
private static class MqttCallbackImpl implements MqttCallback {
@Override
public void connectionLost(Throwable cause) { }
@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
switch(topic) {
// Endless list of cases...
}
}
@Override
public void deliveryComplete(IMqttDeliveryToken token) { }
}
我正在努力找出处理接收到的消息并做出相应反应的“正确”方式——如何通过避免在负载或主题的某些部分使用巨大的 switch() 来编写回调?
【问题讨论】:
-
有什么用例让您订阅了足够多的主题,以至于 if/switch 语句有问题?您必须在某处进行过滤
-
不要介意这个话题:在检查有效载荷的一些信息时,我的疑虑仍然存在