从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