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