Sus*_*ath 7 spring spring-mvc spring-4 spring-websocket
我可以使用SimpMessagingTemplate#convertAndSendToUser
或SimpMessagingTemplate#convertAndSend
方法向消息代理发送消息,而无需设置websocket消息代理@EnableWebSocketMessageBroker
吗?
我要做的是利用一个websocket服务器为两个应用服务器实例提供消息(一个春天4和一个春天3).我创建了一个带有Spring 4,Spring启动和websocket消息代理的Web服务器.
现在我想要两个应用程序服务器将消息推送到rabbitmq,以便它们将它们广播给订阅它的客户端.
我面临的第一个问题是,如果没有可用的websockt消息代理配置,SimpMessagingTemplate
则不会自动连接到应用程序上下文.如果没有创建websocket留言板,我无法注入它.
请帮我弄清楚这是否可行.
好吧,在阅读了大量文档后,我自己找到了答案。关键是这个架构如下。
在此架构中,Spring 充当消息代理和客户端之间通信的网关。Spring 不做任何事情(除了必要的时候),而是将请求转发给消息代理(STOMP 消息)。Spring 上保留的配置定义了一些重要的事情。一个是交换,另一个是路由密钥。Spring 配置为我们提供了一个抽象层,因此我们可以毫不费力地订阅消息并将其推送到消息代理。
SimpMessagingTemplate是我们用来与消息代理通信的抽象层。Spring 使用给定的详细信息创建 bean。嗯,我无法手动创建SimpMessagingTemplate的实例。我必须将 Spring 3 应用程序更新到 Spring 4 才能使用 websockets。
由于 Spring 和消息代理是解耦的,因此应用程序实例的集群不会对消息代理产生任何影响。Spring仅在需要订阅频道或需要向频道发布消息时才会与消息代理进行通信。因此,如果有两个实例订阅同一通道,则将是两个队列使用相同的路由键绑定一个交换器。发布到通道中的消息将可供所有订阅者(队列)使用,因为它们都使用相同的路由密钥。请参阅rabbitmq stop插件文档以获取更详细的描述。
归档时间: |
|
查看次数: |
822 次 |
最近记录: |