Приложение использует STOMP протокол для обмена сообщениями Websockets среде.
Есть контроллер в котором "замапены" методы:
@Controller
public class UserController {
@Autowired
private UserManager userManager;
@MessageMapping("/users")
@SendTo("/queue/users")
@ResponseBody
public List<User> list() {
return userManager.findAll();
}
@MessageMapping("/users")
@SendTo("/queue/users")
@ResponseBody
public User user(@Payload MessagePayload messagePayload) {
int idUser = Integer.parseInt(messagePayload.getRequestValue("id_user"));
User user = userManager.findUserById(idUser);
if (user == null) {
throw new UserNotFoundException(idUser);
}
return user;
}
}
Сообщения имеют кастомный заголовок "command". Как можно дополнительно "замапить" методы в зависимости от содержания "command'.
Например:
@MessageMapping("/users")
@Header("command" = "GETLOCALUSER")
@SendTo("/queue/users")
@ResponseBody
public List<User> list() {
return userManager.findAll();
}