Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SimpMessageTemplate而不创建web套接字消息代理Spring 4_Spring_Spring Mvc_Spring Websocket_Spring 4 - Fatal编程技术网

使用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的方法。