티스토리 뷰
728x90
참고 : http://camel.apache.org/jms.html
RouteBuilder
from("jms:queue:test1?maxConcurrentConsumers=1&maxMessagesPerTask=1&autoStartup=true&preserveMessageQos=true") .bean(com.bluexmas.Test1Queue.class, "doTest") .to("jms:queue:test2"); from("jms:queue:test2?maxConcurrentConsumers=1&maxMessagesPerTask=1&autoStartup=true&preserveMessageQos=true") .bean(com.bluexmas.Test2Queue.class, "doTest") .to("stream:out");
Header1Object
package com.bluexmas; import java.io.Serializable; public class Header1Object implements Serializable { private static final long serialVersionUID = 1L; int age; String name; public Header1Object(int age, String name) { super(); this.age = age; this.name = name; } @Override public String toString() { return "Header1Object [age=" + age + ", name=" + name + "]"; } }
Test1Queue
package com.bluexmas; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.camel.Exchange; import org.apache.camel.Message; import com.uni.fep.bean.service.MQSenderService; import com.uni.fep.bean.util.BeanUtils; import com.uni.fep.bean.util.EnvironmentInit; public class Test1Queue { public void doTest(Exchange exchange) { System.out.println("-- Test1Queue.doTest ----------------------------"); Message in = exchange.getIn(); System.out.println("body = " + in.getBody()); System.out.println("header1 = " + in.getHeader("header1")); System.out.println("header2 = " + in.getHeader("header2")); in.setHeader("header1", "value1-1"); in.setHeader("header2", "value2"); List<String> listValue = new ArrayList<String>(); listValue.add("list1"); listValue.add("list2"); in.setHeader("header3", listValue); System.out.println("header3 = " + in.getHeader("header3")); in.setHeader("header4", new Header1Object(10, "bluexmas")); System.out.println("header4 = " + in.getHeader("header4")); } public static void main(String[] args) throws Exception { EnvironmentInit.init(); MQSenderService service = (MQSenderService)BeanUtils.getBean("MQSenderService"); String message = "Hello Camel"; Map<String, Object>map=new HashMap<String,Object>(); map.put("header1", "value1"); service.doSend("test1", map, message); Thread.sleep(5000); System.exit(0); } }
Test2Queue
package com.bluexmas; import org.apache.camel.Exchange; import org.apache.camel.Message; public class Test2Queue { public void doTest(Exchange exchange) { System.out.println("-- Test2Queue.doTest ----------------------------"); Message in = exchange.getIn(); System.out.println("body = " + in.getBody()); System.out.println("header1 = " + in.getHeader("header1")); System.out.println("header2 = " + in.getHeader("header2")); System.out.println("header3 = " + in.getHeader("header3")); System.out.println("header4 = " + in.getHeader("header4")); } }
출력결과
-- Test1Queue.doTest ---------------------------- body = Hello Camel header1 = value1 header2 = null header3 = [list1, list2] header4 = Header1Object [age=10, name=bluexmas] -- Test2Queue.doTest ---------------------------- body = Hello Camel header1 = value1-1 header2 = value2 header3 = null header4 = null Hello Camel
설명
Camel에서 기본적으로 Header의 내용은 Queue 넘어 갈때 초기화 되는데,
초기화 하지 않고, 그대로 데이터를 가지고 다니려면 preserveMessageQos=true 해주면 된다.
출력결과를 보시면 알 수 있듯이 기본 자료형외에 객체는 전달 할 수가 없는 것으로 판단된다.
header1 : 초기에 전달된 Header의 값으로 그 값을 변경했을때 변경된 값이 전달되는 것을 확인
header2 : 초기에 전달되지 않았으나 추가로 Header에 추가된 값으로 Queue 이동 후 값이 존재하는 것을 확인
Header3 : ArreyList에 기본형 데이터(String) 추가해서 Header에 추가해서 전달했으나 List 전달되지 않는 것으로 확인
Header4 : 사용자가 임으로 만들 객체를 Header에 추가 했으나 Queue 이동 후 값이 전달되지 않는 것으로 확인
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- android
- 지스타2007
- ble
- Java
- 일본여행
- Delphi Tip
- NDK
- flex
- ffmpeg
- 동경
- BPI-M4
- koba2010
- MySQL
- 송주경
- 전예희
- Spring
- Mac
- SAS
- Delphi
- Spring MVC
- 서울오토살롱
- JavaScript
- 튜닝쇼 2008
- 레이싱모델 익스트림 포토 페스티벌
- Xcode
- Linux
- KOBA
- oracle
- ubuntu
- sas2009
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
글 보관함