Как зарегистрировать подписку Stomp в Spring
Я хочу контролировать подписку Stomp в своем приложении Spring с помощью Spring-Messaging v.4.2. Это моя весенняя конфигурация приложения для stomp:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.myapp")
@EnableWebSocketMessageBroker
@EnableAsync
@EnableScheduling
public class Config extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/queue", "/topic");
config.setApplicationDestinationPrefixes("/app");
config.setUserDestinationPrefix("/user");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/pv").setAllowedOrigins("*");
}
@Bean
public Executor taskExecutor() {
return new SimpleAsyncTaskExecutor();
}
@Bean
public MultipartResolver multipartResolver(){
return new CommonsMultipartResolver();
}
}
Как я могу написать метод, вызываемый для каждой подписки с path и stompId в качестве параметров? Спасибо
1 ответ
StompSubProtocolHandler
поднимает уместно ApplicationEvent
s когда это необходимо:
if (this.eventPublisher != null) {
Principal user = getUser(session);
if (isConnect) {
publishEvent(this.eventPublisher, new SessionConnectEvent(this, message, user));
}
else if (StompCommand.SUBSCRIBE.equals(command)) {
publishEvent(this.eventPublisher, new SessionSubscribeEvent(this, message, user));
}
else if (StompCommand.UNSUBSCRIBE.equals(command)) {
publishEvent(this.eventPublisher, new SessionUnsubscribeEvent(this, message, user));
}
}
Вся необходимая информация присутствует в message
, Увидеть StompHeaderAccessor
API, как получить требуемую информацию STOMP из заголовков сообщений по этому вопросу.