我已经使用ActiveMQ配置了Spring STOMP,它运行正常。 但是,有没有机会进行客户的订阅路由?
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableStompBrokerRelay("/topic");
registry.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws")
.withSockJS();
}
我想要实现的是两个通知队列(在前端) - 一个用于管理员用户,一个用于普通用户。用户不发送任何消息,只接收来自服务器的消息。让我们说任何用户都可以发送以下订阅请求:
// app is application destination prefix
client.subscribe('/app/notificator', ...);
服务器应将此请求路由到ActiveMQ:
/topic/notificator/admin - if logged user is of role admin, or
/topic/notificator/user - if logged user is of role user
如何配置Spring来制定这样的路由策略?
答案 0 :(得分:0)
好的,我用控制器解决了它:
@Controller
public class QueueController {
@SubscribeMapping("/notificator")
public String getNotificatorQueue(Principal principal) {
String role = // get role from principal
return "/topic/notificator/" + role;
}
}
通过这种方式,我可以获得用户订阅的URL,我将在" / app / notificator" repsonse。