将消息从ActiveMQ推送到Spring Controller

时间:2015-05-22 03:03:44

标签: java spring-mvc websocket activemq stomp

我正在使用Spring MVC,ActiveMQ和WebSocket(通过sock.jsstomp.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中进行一些授权。

1 个答案:

答案 0 :(得分:0)

一般来说,带@SubscribeMapping和@MessageMapping方法的@Controller可以处理来自通过WebSocket连接的STOMP客户端的订阅和消息。

根据您的描述,您不清楚自己要做什么。消息是通过STOMP从浏览器客户端推送到ActiveMQ还是由其他一些后端JMS客户端生成? MessageReceiver还接收实际消息,而@ Controller方法具有@SubscribeMapping方法,用于处理来自STOMP客户端的订阅。目前尚不清楚你要做什么。请提供更多信息,以便我提供更好的答案。