У меня есть два проекта
- WebApp (SpringMVC)
- Microservice
Идея состоит в том, что у меня есть страница, на которой я перечисляю всепользователи из БД, поэтому в основном мне нужен слушатель на стороне WebApp и продюсер на стороне микросервиса, обычно поток выглядит следующим образом
Whitout rabbitmq (синхронно)
- Нажмите на страницу «Список пользователей»
UserController, который перенаправляет меня на определенный сервис
public List<User>getUsers(){//no args!!
service.getUsers();//no args
}
UserService с логикой для доступа к БД и получения всехusers
public List<User>getUsers(){//no args!!
//connect to DB and retrieve all users
return users
}
Рендеринг пользователей на jsp
С RabbitMQ и при условии, что пользователи уже создали список пользователей насторона microservice
Мой вопрос о том, что если я введу rabbitmq, тогда мне нужен метод, в котором я слушаю сообщение (список продуктов в формате JSON), но теперь поток немного меняется по сравнению с первымодин, потому что
- Нажмите кнопку «Список пользователей»«
Контроллеру нужен метод findAll (Message message), здесь мне нужно передать сообщение, потому что сервис ожидает его, так как сервисом является Listener
public List<User>getUsers(Message message){
service.getAllUsers(**String message**);
}
Служба, как сейчас, - это прослушивание сообщения, мне нужно передать аргумент Message, в котором я буду прослушивать очереди
@RabbitListener(queues = "${queue}", containerFactory = "fac")
public List<User> getUsers(String message){
//Transform JSON to POJO
//some logic...
return users;
}
Так что, в принципе, мой вопрос, является ли второй поток правильным?
Если да, то как мне передать объект Message от контроллера к сервису, потому что в контроллере мне не нужно сообщение, но для прослушивания у меня это правильно?
Если да, то как передать сообщение arg
Есть лучший способ добиться этого?
С уважением