Я пытаюсь отправить некоторые уведомления от Потребителя rabbitmq через веб-сокет и опубликовать их в угловом приложении.
Я новичок как с rabbitmq, так и с веб-сокетом, и я не знаю, как настроитьwebsocket для получения сообщений от потребителя
Вот мой потребитель:
@Override
@RabbitListener(queues = "${rabbitmq.queue}")
public void onMessage(Message message) {
String timi = new String(message.getBody());
JsonObject jsonObject = new Gson().fromJson(timi, JsonObject.class);
MonitoredData monitoredData = new MonitoredData();
monitoredData.setIdPatient((jsonObject.get("Id patient")).getAsString());
monitoredData.setActivity((jsonObject.get("Activity")).getAsString());
monitoredData.setStartTime((jsonObject.get("Start time")).getAsString());
monitoredData.setEndTime((jsonObject.get("End time")).getAsString());
monitoredDataRepo.save(monitoredData);
if (monitoredData.getActivity().contains("Sleeping")) {
DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime date1 = LocalDateTime.from(f.parse(monitoredData.getStartTime()));
LocalDateTime date2 = LocalDateTime.from(f.parse(monitoredData.getEndTime()));
Duration d = Duration.between(date1, date2);
if ((d.getSeconds() / 3600) > 9) {
System.out.println("The patient slept more than 9 hours");
}
}
if (monitoredData.getActivity().contains("Leaving\t")) {
DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime date1 = LocalDateTime.from(f.parse(monitoredData.getStartTime()));
LocalDateTime date2 = LocalDateTime.from(f.parse(monitoredData.getEndTime()));
Duration d = Duration.between(date1, date2);
if ((d.getSeconds() / 3600) > 3) {
System.out.println("The patient was out more than 3 hours");
}
}
if (monitoredData.getActivity().contains("Toileting\t") || monitoredData.getActivity().contains("Showering\t")) {
DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime date1 = LocalDateTime.from(f.parse(monitoredData.getStartTime()));
LocalDateTime date2 = LocalDateTime.from(f.parse(monitoredData.getEndTime()));
Duration d = Duration.between(date1, date2);
if ((d.getSeconds() / 60) >= 30) {
System.out.println("The patient was in the bathroom more than 30 minutes");
}
}
// System.out.println («Полученное сообщение» + сообщение);}
Сообщения, которые я получаю из System.out.println, - это сообщения, которые я хочу разместить во всплывающем окне приложения Angular.
У меня также есть этот контроллер кролика:
@GetMapping("/send")
public String sendMessage() throws InterruptedException {
producer.produceMsg();
return "Message successfully sent";
}