44.2. 메시지 인터페이스 구현
44.2.1. 사용자 정의 메시지 구현 방법
예 44.2. “사용자 정의 메시지 구현” DefaultMessage
클래스를 확장하여 메시지를 구현하는 방법을 간략하게 설명합니다.
예 44.2. 사용자 정의 메시지 구현
import org.apache.camel.Exchange; import org.apache.camel.impl.DefaultMessage; public class CustomMessage extends DefaultMessage { 1 public CustomMessage() { 2 // Create message with default properties... } @Override public String toString() { 3 // Return a stringified message... } @Override public CustomMessage newInstance() { 4 return new CustomMessage( ... ); } @Override protected Object createBody() { 5 // Return message body (lazy creation). } @Override protected void populateInitialHeaders(Map<String, Object> map) { 6 // Initialize headers from underlying message (lazy creation). } @Override protected void populateInitialAttachments(Map<String, DataHandler> map) { 7 // Initialize attachments from underlying message (lazy creation). } }
- 1
org.apache.camel.impl.DefaultMessage
클래스를 확장하여 사용자 정의 메시지 클래스인 CustomMessage 를 구현합니다.- 2
- 일반적으로 기본 속성이 있는 메시지를 생성하는 기본 생성자가 필요합니다.
- 3
- 메시지 문자열을 사용자 지정하려면
toString()
메서드를 재정의합니다. - 4
newInstance()
메서드는MessageSupport.copy()
메서드 내부에서 호출됩니다.newInstance()
메서드의 사용자 지정은 현재 메시지 인스턴스의 모든 사용자 지정 속성을 새 메시지 인스턴스로 복사하는 데 중점을 두어야 합니다.MessageSupport.copy()
메서드는copyFrom()
을 호출하여 일반 메시지 속성을 복사합니다.- 5
createBody()
메서드는MessageSupport.getBody()
메서드와 함께 작동하여 메시지 본문에 대한 지연 액세스를 구현합니다. 기본적으로 메시지 본문은null
입니다. 이는 애플리케이션 코드가 (getBody()
() 호출) 본문에 액세스하려고 할 때만 본문을 생성해야 합니다.MessageSupport.getBody()
는 메시지 본문에 처음 액세스하면createBody()
를 자동으로 호출합니다.- 6
populateInitialHeaders()
메서드는 헤더 getter 및 setter 메서드와 함께 작동하여 메시지 헤더에 대한 지연 액세스를 구현합니다. 이 메서드는 메시지를 구문 분석하여 메시지 헤더를 추출하고 해시 맵에 삽입합니다.사용자가 처음으로 헤더(또는 헤더)에 액세스하려고 할 때(
getHeaders()
,getHeaders(),
메서드가 자동으로 호출됩니다.setHeaders()
또는setHeaders()
를 호출하여)populateInitialHeaders()
- 7
populateInitialAttachments()
메서드는 attachment getter 및 setter 방법과 함께 작동하여 첨부 파일에 대한 지연 액세스를 구현합니다. 이 방법은 메시지 첨부 파일을 추출하여 해시 맵에 삽입합니다.populateInitialAttachments()
메서드는 사용자가getAttachment()
, getAttachments() ,getAttachmentNames
()addAttachment()
를 호출하여 처음으로 첨부(또는 첨부 파일)에 액세스하려고 할 때 자동으로 호출됩니다.