使用SimpMessageTemplate而不创建web套接字消息代理Spring 4
我可以使用使用SimpMessageTemplate而不创建web套接字消息代理Spring 4,spring,spring-mvc,spring-websocket,spring-4,Spring,Spring Mvc,Spring Websocket,Spring 4,我可以使用SimpMessageTemplate#convertAndSendToUser或SimpMessageTemplate#convertAndSend方法向消息代理发送消息,而无需使用@EnableWebSocketMessageBroker设置websocket消息代理吗 我尝试使用一个websocket服务器为两个应用服务器实例(一个Spring4和一个Spring3)提供消息。我使用Spring4创建了一个单web服务器,启用了SpringBoot和websocket消息代理 现
SimpMessageTemplate#convertAndSendToUser
或SimpMessageTemplate#convertAndSend
方法向消息代理发送消息,而无需使用@EnableWebSocketMessageBroker
设置websocket消息代理吗
我尝试使用一个websocket服务器为两个应用服务器实例(一个Spring4和一个Spring3)提供消息。我使用Spring4创建了一个单web服务器,启用了SpringBoot和websocket消息代理
现在我需要两个应用服务器将消息推送到rabbitmq,以便它将消息广播给订阅它的客户端
我面临的第一个问题是,如果没有可用的WebSocket message broker配置,SimpMessageTemplate
将不会自动连接到应用程序上下文。如果不创建websocket留言板,我也无法将其注入
请帮我看看这是否可行
顺便说一句,我有一个未回答的相关问题 在阅读了大量文档之后,我自己找到了答案。关键是这个架构是遵循的 在这种体系结构中,spring充当消息代理和客户端之间通信的网关。Spring不做任何事情(除了必要时),而是将请求转发给MessageBroker(STOMP消息)。Spring上的配置定义了两个重要的东西。一个是交换,另一个是路由密钥。Spring配置为我们提供了一个抽象层,所以我们可以订阅消息并将消息推送到MessageBroker,而无需大惊小怪 SimpMessageTemplate是我们用来与MessageBroker通信的抽象层。Spring使用给定的细节创建bean。我无法手动创建SimpMessageTemplate的实例。为了使用WebSocket,我必须将Spring3应用程序更新为Spring4
因为Spring和MessageBroker是解耦的,所以集群应用程序实例不会对MessageBroker产生任何影响。Spring将仅在需要订阅通道或需要将消息发布到通道时与MessageBroker通信。因此,如果有两个实例订阅同一个通道,那么将是两个队列使用相同的路由密钥绑定一个交换机。发布到通道中的消息将对所有订阅者(队列)可用,因为它们都使用相同的路由密钥。请参阅以获得更详细的描述。我认为要向rabbitmq这样的代理发送消息,不应该使用
SimpMessageTemplate
,而应该使用RabbitTemplate
是,这应该是一般情况。我们应该能够直接推送到rabbitmq队列。在Spring websocket中,该部分已隐藏在某些地方。无法确定队列名称等。在配置MessageBroker时,它提供了一个SimpMessageTemplate
类的bean和两个将消息推送到MessageBroker的方法。