Cómo usar EjecutorsUrscribAdreChannel
-
21-12-2019 - |
Pregunta
relacionado con la pregunta Autowire SimpMessagingTemplate
Estoy teniendo problemas para los ejecutores de la claseBSCRIBABLECHANNEL.Quiero que el servidor envíe un mensaje asíncrono al navegador. ¿Cómo puedo usar ejecutores adecuadamenteUsCribAdreChannel ?
Ejemplo:
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() + "!");
}
}
Pero el texto "Hello World" que estoy enviando en la línea
this.template.convertAndSend("/topic/greetings", "Hello World");
no está siendo recibido por el navegador.Todo lo demás funciona bien.
La configuración de frijoles es:
<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>
gracias de antemano.
Solución
Esta pregunta fue escrita debido a un error en la idea de IntelliJ.La respuesta es en no pudo Autowire.No se encontraron frijoles de tipo SimpMessagingTemplate.
a Ticket ha sido creado en JetBains para resolver este problema.
Otros consejos
Intenta usar esta configuración
<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>
en lugar de
<bean id="executorSC" class="org.springframework.messaging.support.ExecutorSubscribableChannel"/>