Я новичок в Spring и пытаюсь вставить в свой MySQL данные из информации, полученной MQTT.
Я создал свое приложение со следующим кодом.
public static void main(String[] args) throws InterruptedException {
ConfigurableApplicationContext context = SpringApplication.run(MqttServiceApplication.class, args);
context.registerShutdownHook();
ProductionSubscribe();
}
С помощью метода
public static void ProductionSubscribe() {
try {
IMqttClient client = new MqttClient("tcp://192.168.0.201:1883", new Date().getTime() + "");
client.connect();
ProductionCallBack productionCallBack = new ProductionCallBack();
client.setCallback(productionCallBack);
client.subscribe("/InputCounter/#");
} catch (MqttException e) {
e.printStackTrace();
}
}
Итак, я реализовал MqttCallback
@Component
public class ProductionCallBack implements MqttCallback {
@Autowired
private MachineService machineService;
@Override
public void connectionLost(Throwable throwable) {
System.out.println(throwable);
}
@Override
public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
String name = s.replace("/InputCounter/", "").split("/")[0];
Date now = new Date();
EasyIOModel easyIOModel = new ObjectMapper().readValue(mqttMessage.toString(), EasyIOModel.class);
// Get Machine
Machine machine = machineService.getMachineByNameAndInputNumber(easyIOName);
if (machine == null) {
System.out.println("Error.");
}
}
@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
System.out.println("deliveryComplete");
}
}
Все идет хорошо до вызова метода messageArrived. Мой сервис machineService имеет значение null и не может вызывать сервисы
Если я использую контроллеры REST, мои сервисы работают хорошо ... Но я не знаю, какие аннотации использовать в этом случае с MQTT, поэтому я могу позвонить мои услуги.
Спасибо,