从MQ Listener中通知客户端

我使用Spring使用web-sockets。

这是我的控制器。 一个简单的控制器,它将接受一个结果对象并返回一个带有填充值的结果对象。 它将向STOMP主题订阅者“/ topic / update”发布消息。

@Controller
public class ReportController {

    @MessageMapping("/charthandler")
    @SendTo("/topic/update")
    public Result pushMessage(Result r) throws Exception {
        Thread.sleep(3000); // simulated delay
        Result result = new Result();
        result.setTitle("ChartsPage");
        return result;
    }

}

我的Spring配置文件:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/charthandler").withSockJS();
    }

    @Bean
    public WebSocketHandler chartHandler() {
        return new ChartHandler();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/app");
    }

}

我在JavaScript中创建了一个STOMP Web Socket Client。 它正在订阅'/ topic / update'

var socket = new SockJS('/reportapplication/charthandler/');
stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
  console.log('Connected: ' + frame);
  stompClient.subscribe('/topic/update', function(result) {
    console.log(JSON.parse(result.body).title);
  });
});

现在我正计划添加一个侦听器(Java而不是JavaScript),它将侦听Rabbit MQ消息,我想将消息对象传递给我的控制器,并将所有消息推送到Web Socket客户端。

我不知道如何通知我的所有网络套接字客户端,当消息到达我的MQ监听器时。 我将如何做到这一点?

是创建报表控制器实例并调用pushMessage来通知所有Web套接字客户端的好方法。

ReportController controller = new ReportController();
controller.pushMessage(report);

另外我不确定,如果这个工程。 我会尝试。 我想知道是否有更好的方法。

有没有更好的方法或更好的方式来做到这一点?


也许如果你看看Artem Bilan提供给以下问题的回应:Spring,如何使用websockets向连接的客户端广播消息?

因此,如果您的Rabbit MQ消息的Java侦听器位于服务中,那么您可以在同一服务中执行以下操作,并调用sendTo标记的WS通知端点,并传递期望的消息以发送给WS客户端侦听。

@Autowired
private SimpMessagingTemplate brokerMessagingTemplate;
.......
this.brokerMessagingTemplate.convertAndSend("/topic/greetings", "foo");
链接地址: http://www.djcxy.com/p/44775.html

上一篇: notify the client from the MQ Listener

下一篇: Websockets with tornado