
Stomp 프레임워크의 getReadTimeout() 메서드는 메시지 브로커와의 연결에서 읽기 타임아웃을 설정하는 메서드입니다.
이 메서드는 연결이 끊어질 때까지 기다리는 시간을 설정하는 데 사용됩니다.
기본값은 0으로, 즉 타임아웃이 설정되지 않은 상태입니다.
getReadTimeout() 메서드를 사용하여 예제 코드를 작성해 보겠습니다.
#hostingforum.kr
java
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
import org.springframework.messaging.converter.MessageConverter;
import org.springframework.messaging.converter.MappingJackson2MessageConverter;
import org.springframework.messaging.simp.stomp.StompFrame;
import org.springframework.messaging.simp.stomp.StompHeaders;
import org.springframework.messaging.simp.stomp.StompSession;
import org.springframework.messaging.simp.stomp.StompSessionHandlerAdapter;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.web.socket.client.standard.StandardWebSocketClient;
import org.springframework.web.socket.messaging.WebSocketStompClient;
import org.springframework.web.socket.sockjs.client.SockJsClient;
import org.springframework.web.socket.sockjs.client.Transport;
import org.springframework.web.socket.sockjs.client.WebSocketTransport;
import java.util.Collections;
import java.util.List;
public class StompClient {
public static void main(String[] args) {
WebSocketStompClient stompClient = new WebSocketStompClient(new SockJsClient(Collections.singleton(new WebSocketTransport(new StandardWebSocketClient()))));
stompClient.setMessageConverter(new MappingJackson2MessageConverter());
StompHeaders headers = new StompHeaders();
headers.setDestination("/topic/greeting");
StompSession session = stompClient.connect("ws://localhost:8080/greeting", new StompSessionHandlerAdapter() {
@Override
public void afterConnected(StompSession session, StompHeaders connectedHeaders) {
session.send(MessageBuilder.createMessage("Hello, World!", headers).build());
}
}).get();
// getReadTimeout() 메서드를 사용하여 읽기 타임아웃을 설정합니다.
session.getReadTimeout().setTimeout(1000); // 1초의 타임아웃을 설정합니다.
// 메시지를 받을 때까지 기다립니다.
try {
Message<?> message = session.receive();
System.out.println(message.getPayload());
} catch (Exception e) {
System.out.println("타임아웃 발생");
}
}
}
이 예제 코드에서는 getReadTimeout() 메서드를 사용하여 읽기 타임아웃을 1초로 설정한 후 메시지를 받을 때까지 기다립니다. 만약 타임아웃이 발생하면 "타임아웃 발생"이 출력됩니다.
2025-06-03 14:47