如何使用到达Mqtt代理的消息?

时间:2019-05-16 11:19:43

标签: spring-boot mqtt

我正在尝试将消息保存在变量中,以便在另一个类中使用它。该消息来自Mqtt代理,我可以在Collback方法中阅读它,但是我不能影响它成为变量以在其他方法中使用它。

我尝试了get / set,但是我仍然无法从其他课程中获取它,我认为这是因为我们具有刷新页面的功能,但是即使这样做,也不会显示消息(我想要在将其显示在网页之前先在控制台中显示)

// All the import
@Controller
public class MainController{
@Autowired
SimpleMqttCallBack simpleMqttCallBack;
...
@RequestMapping(value="/")
    public String home() throws MqttException {
System.out.println("== START SUBSCRIBER ==");
        MqttClient client=new MqttClient("tcp://192.168.1.52:1883", MqttClient.generateClientId());
        client.setCallback( new SimpleMqttCallBack() );
        client.connect();

        client.subscribe("iot_data");
System.out.println(simpleMqttCallBack.getT());
return "index";
}
}
@Service
public class SimpleMqttCallBack implements MqttCallback {
String T;
//Set/get of T
//connectionLost
@Override
    public void messageArrived(String topic, MqttMessage message) throws Exception {
String msg = new String(message.getPayload());
setT(msg);
}
//Deliverycomplete
}

我想在消息到达时使用事件,但是我不知道它是否有效,并且我不知道如何在Spring Boot中使用事件。

1 个答案:

答案 0 :(得分:0)

已解决,如果要在所有类中使用消息,则必须在mqttcallback类的开头声明一个静态字符串(例如msg),然后会影响在代理上读取到变量的消息( msg)就是这样