Spring Stomp + ActiveMQ и новые адреса назначения, как быть на клиенте?

Понадобилось установить ActiveMQ взамен стандартного брокера в Spring. И здесь начались проблемы с Destination Name т.к ActiveMQ не будет работать с / Следовательно, что работало по пути /topic/action/{actionId}работать будет только так /topic/action.{actionId}

Проблема в том что клиент - это Android приложение, и необходимо заставить всех юзеров это приложение переустановить. Есть более гуманный способ? Может можно указать в настройках Spring реврайтить некоторые адреса при запросах в ActiveMQ...

Код до боли стандартный

@Override
public void configureMessageBroker(final MessageBrokerRegistry config) {
    config.
            enableStompBrokerRelay("/topic").
            setRelayHost("localhost").
            setRelayPort(61613).
            setSystemLogin("admin").
            setSystemPasscode("password");
    config.setApplicationDestinationPrefixes("/app");
}

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
    registry.addEndpoint("/ws")
            .addInterceptors(new IpHandshakeInterceptor())
            .setAllowedOrigins("*")
            .withSockJS();
}

Вся обработка получения и рассылки соообщений подписчикам в этом методе
@MessageMapping("/action.{actionId}")
public void addMessage(SimpMessageHeaderAccessor sha, @DestinationVariable("actionId") String actionId, ChatMessage message) throws InterruptedException {
    simpMessagingTemplate.convertAndSend("/topic/action." + actionId, message);
}
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы