payload STOMP 메시징에서 payload(페이로드)는 실제로 주고받는 메시지의 내용물이다.
- 서버로부터 실제로 받게 될 메시지 데이터
- 어떤 형태로 받을지 지정하고(getPayloadType)
- 받은 후 어떻게 처리할지 정의(handleFrame)하는 데 사용된다.
구독 자체에는 payload가 필요 없지만, 구독 후 메시지를 받았을 때 그 메시지(payload)를 어떻게 처리할지 정의하는 것이 필요하다.
public Type getPayloadType(StompHeaders headers) {
return String.class; // 어떤 타입으로 메시지를 받을지 지정
}
public void handleFrame(StompHeaders headers, Object payload) {
String message = (String) payload; // 실제 받은 메시지 내용
// 여기서 메시지를 처리
}
예를 들어 채팅 애플리케이션이라면:
// 채팅 메시지 클래스
class ChatMessage {
private String sender;
private String content;
// getters, setters...
}
// 구독 설정
session.subscribe("/topic/chat", new StompFrameHandler() {
@Override
public Type getPayloadType(StompHeaders headers) {
return ChatMessage.class; // ChatMessage 타입으로 받겠다
}
@Override
public void handleFrame(StompHeaders headers, Object payload) {
ChatMessage chatMessage = (ChatMessage) payload;
System.out.println(chatMessage.getSender() + ": " + chatMessage.getContent());
}
});