我需要订阅内部 Spring Boot 主题/user/exchange/amq.direct/chat.message
以创建一个机器人,该机器人将订阅主题队列并回答消息。
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
// use the /topic prefix for outgoing WebSocket communication
config.enableSimpleBroker("/queue/", "/topic/", "/exchange/");
// use the /app prefix for others
config.setApplicationDestinationPrefixes("/app");
}
}
我的控制器:
@MessageMapping("/chat.message")
public ChatMessage filterMessage(@Payload ChatMessage message, Principal principal) {
message.setUsername(principal.getName());
return message;
}
@MessageMapping("/chat.private.{username}")
public void filterPrivateMessage(@Payload ChatMessage message, @DestinationVariable("username") String username, Principal principal) {
message.setUsername(principal.getName());
simpMessagingTemplate.convertAndSend("/user/" + username + "/exchange/amq.direct/chat.message", message);
}
如何订阅我通过 SimpMessagingTemplate 放置消息的内部队列/主题?