Как использовать ExecutorSubscribeableChannel

Связано с вопросом autowire simpmessagingtemplate

У меня проблема с классом ExecutorSubscribeableChannel. Я хочу, чтобы сервер отправлял асинхронное сообщение в браузер. Как я могу правильно использовать ExecutorSubscribeableChannel?

Пример:

public class GreetingController {


    @Autowired
    private SimpMessagingTemplate template;

    public void setTemplate(SimpMessagingTemplate template) {
        this.template = template;
    }

    @MessageMapping("/hello")
    @SendTo("/topic/greetings")
    public Greeting greeting(HelloMessage message) throws Exception {
        Thread.sleep(5000); // simulated delay
        this.template.convertAndSend("/topic/greetings", "Hello World");
        return new Greeting("Hello, " + message.getName() + "!");
    }
}

но текст «привет мир», который я отправляю в строке

this.template.convertAndSend("/topic/greetings", "Hello World");

не принимается браузером. Все остальное работает нормально.

Конфигурация бобов:

<bean id="executorSC" class="org.springframework.messaging.support.ExecutorSubscribableChannel"/>

<bean id="template" class="org.springframework.messaging.simp.SimpMessagingTemplate">
    <constructor-arg index="0" ref="executorSC"/>
</bean>

Заранее спасибо.


person Tk421    schedule 12.04.2014    source источник


Ответы (2)


Этот вопрос был написан из-за ошибки в Intellij IDEA. Ответ находится в Не удалось выполнить автоподключение. Компоненты типа SimpMessagingTemplate не найдены

Для решения этой проблемы в JetBrains был создан тикет.

person Tk421    schedule 14.04.2014

попробуйте использовать эту конфигурацию

<websocket:message-broker
    application-destination-prefix="/app">
    <websocket:stomp-endpoint path="/ws">
        <websocket:sockjs />
    </websocket:stomp-endpoint>
    <websocket:simple-broker prefix="/topic/greetings" />
</websocket:message-broker>

вместо

<bean id="executorSC" class="org.springframework.messaging.support.ExecutorSubscribableChannel"/>

person Cristian Caram Peñalver    schedule 19.01.2017