我正在使用Spring MVC,ActiveMQ和WebSocket(通过sock.js
和stomp.js
)来构建实时数据传输应用程序。
正如我们所知,当一个生产者(另一个桌面应用程序)将消息推送到ActiveMQ时,onMessage()
方法将捕获它。
public class MessageReceiver implements MessageListener {
public void onMessage(Message message) {
System.out.println(message);
// How to push the message to a Controller in Spring?
}
}
大多数教程只是将消息打印到控制台。
我有另一个名为WebSocketController
的控制器:
@Controller
public class WebSocketController {
@SubscribeMapping("/getRealTimeResult.action/{submissionId}")
public Message getRealTimeResultAction(
@DestinationVariable long submissionId) {
return new Message("Message content from onMessage() method");
}
}
我想将onMessage()
方法中收到的消息推送到getRealTimeResultAction()
方法。你能告诉我怎么做吗?
我知道ActiveMQ可以通过端口stomp
使用61613
与浏览器通信。
我不想这样做,因为我认为MQ应该对用户透明。另外,我需要在WebSocketController
中进行一些授权。
答案 0 :(得分:0)
一般来说,带@SubscribeMapping和@MessageMapping方法的@Controller可以处理来自通过WebSocket连接的STOMP客户端的订阅和消息。
根据您的描述,您不清楚自己要做什么。消息是通过STOMP从浏览器客户端推送到ActiveMQ还是由其他一些后端JMS客户端生成? MessageReceiver还接收实际消息,而@ Controller方法具有@SubscribeMapping方法,用于处理来自STOMP客户端的订阅。目前尚不清楚你要做什么。请提供更多信息,以便我提供更好的答案。