Я недавно начал проект, который имеет дело с rabbitmq, websockets и push-уведомлениями. Я установил связь rabbitmq между слушателем и отправителем, но теперь я застрял в понимании того, что добавить в приложение для части websocket / push-уведомления. Я просмотрел различные учебные пособия в Интернете, но учебные пособия не совсем совпадают, и я не понимаю, как действовать дальше.
В моих проектах предполагается, что я читаю список действий пациента из файла и каждые 3 или 5 секунд отправляю строку этого списка в веб-часть для дальнейшего просмотра (у меня также есть некоторые правила для действий),Мне удалось сделать большую часть отправки с rabbitmq + amqp, и теперь я борюсь с тем, что делать после этого. Как добавить веб-сокеты и как их подключить?
Ниже приведен мой класс слушателя rabbitmq:
package assignment2.Ass;
////spirng messaging is in the tutorial for the first part
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;
@Service
public class PracticalTipListener {
private static final Logger log = LoggerFactory.getLogger(PracticalTipListener.class);
@RabbitListener(queues = AssApplication.DEFAULT_PARSING_QUEUE)
public void consumedDefaultMesage(final MessageDefinition message) {
log.info("Message Received" + message.toString());
Rules applyRules= new Rules(message);
}
}
Отправитель
package assignment2.Ass;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@Service
public class PracticalTipSender {
private static final Logger log = LoggerFactory.getLogger(PracticalTipSender.class);
int count=0;
private final RabbitTemplate rabbitTemplate;
FileReading fl= new FileReading();
List<String> listaAct = fl.listaDespartita;
public PracticalTipSender(RabbitTemplate rabbitTemplate) {
this.rabbitTemplate = rabbitTemplate;
}
@Scheduled(fixedDelay = 3000L,initialDelay = 5000L)
public void send() {
String start= fl.dataMaker(listaAct.get(count),listaAct.get(count+1));
String end= fl.dataMaker(listaAct.get(count+2),listaAct.get(count+3));
String act=listaAct.get(count+4);
System.out.println(start+end+act);
MessageDefinition mes= new MessageDefinition("1",start,end,act);
System.out.println(mes);
count=count+5;
rabbitTemplate.convertAndSend(AssApplication.EXCHANGE_NAME, AssApplication.ROUTING_KEY, mes);
log.info("message sent");
}
//
}
Это метод, из которого я подключаюсь к серверу rabbtitmq и создаю очередь
@SpringBootApplication
@EnableScheduling
public class AssApplication {
public static final String EXCHANGE_NAME = "tips_tx";
public static final String DEFAULT_PARSING_QUEUE = "default_parser_q";
public static final String ROUTING_KEY = "tips";
public static void main(String[] args) {
SpringApplication.run(AssApplication.class, args);
}
@Bean
public TopicExchange tipsExchange() {
return new TopicExchange((EXCHANGE_NAME));
}
@Bean
public Queue defaultParsingQueue() {
return new Queue(DEFAULT_PARSING_QUEUE);
}
@Bean
public Binding queueTopicExchange() {
return BindingBuilder.bind(defaultParsingQueue()).to(tipsExchange()).with(ROUTING_KEY);
}
@Bean
public Jackson2JsonMessageConverter produceJSON()
{
return new Jackson2JsonMessageConverter();
}
@Bean
public RabbitTemplate rabbitTemplateConf(final ConnectionFactory conect)
{
RabbitTemplate rory= new RabbitTemplate(conect);
rory.setMessageConverter(produceJSON());
return rory;
}
FileReading - это класс, в котором я читаю входной файл, а определение сообщения - это класс модели для моего сообщения (сообщения в формате JSON), правила - это некоторые правила для действия.
Была бы весьма признательна за помощь в том, как действовать дальше. Спасибо !