Trong bài viết trước, mình đã hướng dẫn các bạn cách relay Websocket connection trong Spring Websocket sử dụng RabbitMQ. Các bạn cũng có thể sử dụng ActiveMQ để làm điều này. Cụ thể như thế nào? Chúng ta sẽ cùng nhau tìm hiểu trong bài viết này các bạn nhé!
Đầu tiên, các bạn cần start một ActiveMQ server lên, với Docker Compose thì các bạn cần expose thêm port 61613 của STOMP connection:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
version: '3.9' services: activemq: image: activemq:0.0.1 container_name: 'activemq' ports: - 61616:61616 - 61613:61613 - 8161:8161 volumes: - ~/Documents/data/activemq/data:/data/activemq - ~/Documents/data/activemq/log:/var/log/activemq |
sau đó thì trong phần cấu hình StompBrokerRelay trong ví dụ của bài viết trước, chúng ta sẽ sử dụng thông tin của ActiveMQ, như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
package com.huongdanjava.springboot.websocket; import org.springframework.context.annotation.Configuration; import org.springframework.messaging.simp.config.MessageBrokerRegistry; import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; import org.springframework.web.socket.config.annotation.StompEndpointRegistry; import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer; @Configuration @EnableWebSocketMessageBroker public class WebSocketConfiguration implements WebSocketMessageBrokerConfigurer { @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/hello").withSockJS(); } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { // @formatter:off registry.enableStompBrokerRelay("/topic") .setRelayHost("localhost") .setRelayPort(61613); // @formatter:on registry.setApplicationDestinationPrefixes("/app"); } } |
Chạy lại ứng dụng, sau đó thì mở 2 cửa sổ trình duyệt và nhập tên của bạn ở trình duyệt này, các bạn cũng sẽ thấy cả 2 browser đều nhận được message từ WebSocket server.