我正在尝试将消息保存在变量中,以便在另一个类中使用它。该消息来自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中使用事件。
答案 0 :(得分:0)
已解决,如果要在所有类中使用消息,则必须在mqttcallback类的开头声明一个静态字符串(例如msg),然后会影响在代理上读取到变量的消息( msg)就是这样