5.6. 메시지#159
5.6.1. 개요
그림 5.8. “메시지#159 패턴” 에 표시된 메시지 번역 패턴은 메시지의 내용을 수정하여 다른 형식으로 변환하는 구성 요소를 설명합니다. Apache Camel의 8080 통합 기능을 사용하여 메시지 변환을 수행할 수 있습니다.
그림 5.8. 메시지#159 패턴
5.6.2. Cryostat 통합
metrics 통합을 사용하여 메시지를 변환하여 등록된 모든 Cryostat에서 메서드를 호출할 수 있습니다. 예를 들어, myMethodName()
메서드를 호출하려면 빈에서 ID를 사용하여 myTransformerBean
:
from("activemq:SomeQueue") .beanRef("myTransformerBean", "myMethodName") .to("mqseries:AnotherQueue");
여기서 myTransformerBean
VLAN은 Spring XML 파일 또는 JNDI에 정의되어 있습니다. 8080 Ref()
에서 method name 매개변수를 생략하면, 8080 통합은 메시지 교환을 검사하여 메서드 이름을 추론하려고 합니다.
다음과 같이 자체 명시적 Processor
인스턴스를 추가하여 변환을 수행할 수도 있습니다.
from("direct:start").process(new Processor() { public void process(Exchange exchange) { Message in = exchange.getIn(); in.setBody(in.getBody(String.class) + " World!"); } }).to("mock:result");
또는 DSL을 사용하여 다음과 같이 변환을 명시적으로 구성할 수 있습니다.
from("direct:start").setBody(body().append(" World!")).to("mock:result");
템플릿 작성을 사용하여 한 대상의 메시지를 사용하여 Velocity 또는 XQuery와 같은 것으로 변환한 다음 다른 대상으로 보낼 수도 있습니다. 예를 들어 InOnly 교환 패턴 (one-way 메시징) 사용 :
from("activemq:My.Queue"). to("velocity:com/acme/MyResponse.vm"). to("activemq:Another.Queue");
템플릿이 생성된 응답과 함께 ActiveMQ의 My.Queue
큐에서 요청을 처리하는 데 InOut (request-reply) 의미 체계를 사용하려면 다음과 같은 경로를 사용하여 JMSReplyTo
대상에 응답을 다시 보낼 수 있습니다.
from("activemq:My.Queue"). to("velocity:com/acme/MyResponse.vm");