Saltar al contenido

Diferencia entre / topic, / queue para SimpleMessageBroker en Spring Websocket + SockJS

Solución:

Debería echar un vistazo a esta parte de la documentación de referencia. En una palabra, "/topic" y "/queue" son ambos prefijos configurados para el mismo destino.

En la documentación, "/app" es el “prefijo de destino de la aplicación” configurado, es decir, todos los mensajes que fluyen a través del "clientInboundChannel" y la coincidencia de esos prefijos se asignará a su aplicación, por ejemplo, con @MessageMapping anotaciones.

Aqui tambien, "/topic" y "/queue" son ambos prefijos configurados como destinos STOMP, es decir, todos los mensajes que fluyen a través del "clientInboundChannel" y la coincidencia de esos prefijos se enviará al corredor de STOMP. En su caso, esa es la implementación del corredor simple.

Entonces, desde el punto de vista de Spring Websocket, "/queue" y "/topic" se tratan de la misma manera y son destinos STOMP “típicos”: todos los mensajes que coinciden con ellos se reenvían al agente de mensajes. Ahora bien, si está utilizando una implementación completa de intermediario de mensajes, es posible que esos destinos no tengan el mismo significado y el comportamiento del intermediario de mensajes podría ser diferente. Aquí hay algunos ejemplos con Apache Apollo y RabbitMQ.

Tenga en cuenta que, si lo desea, puede cambiar esos prefijos. Pero le aconsejaría que los mantenga como predeterminados a menos que realmente sepa lo que está haciendo.

Creo que la mejor respuesta para ese tema sería la siguiente de Spring Docs

El significado de un destino se deja intencionalmente opaco en la especificación STOMP. Puede ser cualquier cuerda, y depende totalmente de los servidores STOMP definir la semántica y la sintaxis de los destinos que admiten. Sin embargo, es muy común que los destinos sean cadenas de tipo ruta donde “/ topic / ..” implica publicar-suscribir (uno a muchos) y “/ queue /” implica punto a punto (uno a -uno) intercambios de mensajes.

Hay una diferencia más grande e importante que no se menciona en las respuestas anteriores.

El tema se elimina automáticamente, mientras que la cola es duradera. Significa que cuando se cierra la conexión websocket, el tema y sus datos se eliminan. en cola, el servidor aún puede enviar mensajes y cuando el cliente se conecta a través de websocket, recibe mensajes antiguos enviados por el servidor.

Por cierto, no hay diferencia en el intermediario en memoria. Esto sucede cuando se usa un corredor dedicado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *