178.7. JMS와 Camel 간 메시지 매핑
Camel은 javax.jms.Message
와 org.apache.camel.Message
사이에 메시지를 자동으로 매핑합니다.
JMS 메시지를 전송할 때 Camel은 메시지 본문을 다음 JMS 메시지 유형으로 변환합니다.
본문 유형 | JMS 메시지 | 주석 |
---|---|---|
|
|
|
|
|
DestinationRule은 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JMS 메시지를 수신할 때 Camel은 JMS 메시지를 다음 본문 유형으로 변환합니다.
JMS 메시지 | 본문 유형 |
---|---|
|
|
|
|
|
|
|
|
178.7.1. JMS 메시지의 자동 매핑 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
mapJmsMessage
옵션을 사용하여 위의 자동 매핑을 비활성화할 수 있습니다. 비활성화된 경우 Camel은 수신된 JMS 메시지를 매핑하지 않고 대신 페이로드로 직접 사용합니다. 이를 통해 매핑의 오버헤드를 방지하고 Camel이 JMS 메시지를 통과하도록 할 수 있습니다. 예를 들어 classpath에 없는 클래스와 함께 javax.jms.ObjectMessage
JMS 메시지를 라우팅할 수도 있습니다.
178.7.2. 사용자 정의 MessageConverter 사용 링크 복사링크가 클립보드에 복사되었습니다!
messageConverter
옵션을 사용하여 Spring org.springframework.jms.support.converter.MessageConverter
클래스에서 직접 매핑을 수행할 수 있습니다.
예를 들어 아래 경로에서는 메시지를 JMS 순서 큐로 전송할 때 사용자 정의 메시지 변환기를 사용합니다.
from("file://inbox/order").to("jms:queue:order?messageConverter=#myMessageConverter");
from("file://inbox/order").to("jms:queue:order?messageConverter=#myMessageConverter");
JMS 대상에서 사용할 때 사용자 정의 메시지 변환기를 사용할 수도 있습니다.
178.7.3. 선택한 매핑 전략 제어 링크 복사링크가 클립보드에 복사되었습니다!
끝점 URL에서 jmsMessageType
옵션을 사용하여 모든 메시지에 대해 특정 메시지 유형을 강제 적용할 수 있습니다.
아래 경로에서는 JMS 프로듀서 엔드포인트에서 텍스트 메시지를 사용하도록 강제했기 때문에 폴더의 파일을 폴링하고 javax.jms.ECDHEMessage
로 보냅니다.
from("file://inbox/order").to("jms:queue:order?jmsMessageType=Text");
from("file://inbox/order").to("jms:queue:order?jmsMessageType=Text");
CamelJmsMessageType
키로 헤더를 설정하여 각 메시지에 사용할 메시지 유형을 지정할 수도 있습니다. 예를 들면 다음과 같습니다.
from("file://inbox/order").setHeader("CamelJmsMessageType", JmsMessageType.Text).to("jms:queue:order");
from("file://inbox/order").setHeader("CamelJmsMessageType", JmsMessageType.Text).to("jms:queue:order");
가능한 값은 org.apache.camel.jms.JmsMessageType
에 정의되어 있습니다.