Site Search :
Standard Enterprise XML Methodology Pattern Setting Tunning Other
Article Contributors
GuestBook
Javapattern Maven
XSourceGen Dev
JetSpeed Test
JLook Image
jLook Family Site


Weblogic 7에서 JMS Queue Browser 활용 2
 
첫번째 아티클에서 QueueBrowser로 원하는 Queue에 어떤 메시지가 있는지 조회하는 프로그램을 잠시 만들어봤는데, 여기에 추가하여 조회 조건을 넣어 검색을 하는 프로그램을 만들어 볼까 한다. ( 2003/08/20 ) 117
Written by mino - 김민호
1 of 1
 


이번 아티클은 첫번째 아티클에 이어진 내용으로, 만일 첫번째 아티클을 읽지 않은 분들은 
되도록이면 첫번째 아티클을 읽어 주셨으면 하는 바람이다.. 
아무래도 중복된 내용은 생략할 것임으로.

▶ 준비사항

첫번째 아티클을 읽는다. 

Weblogic 7에서 JMS Queue Browser 활용 1

설마 이렇게 까지 했는데 안읽으면 미워~~~

▶ QueueBrowser로 검색하기

첫번째 아티클에서 QueueBrowser로 원하는 Queue에 어떤 메시지가 있는지 조회하는 프로그램을 
잠시 만들어봤는데, 여기에 추가하여 조회 조건을 넣어 검색을 하는 프로그램을 만들어 볼까 한다.
기존 소스는 단지 해당 Queue안에 있는 메시지 전부를 Browser하는것이었는데, 이번에는 
messageSelector를 사용하여 검색하는것인데, SQL문을 써보신 분들은 아시겠지만, 
특정 table을 검색할 때 where절 하단에 들어가는 부분이 바로 QueueBrowser의 messageSelector가 
된다고 보면 되겠다. (어렵나? 그냥 한번 보면 안다.)

▶ 소스 비교하기

1. 해당 Queue에 전체 Message를 자져오는 소스
  QueueBrowser queueBrowser = queueSession.createBrowser(queue);
2. message selector를 사용하여 원하는 메시지만 가져오는 소스
  QueueBrowser queueBrowser = queueSession.createBrowser(queue , messageSelector);

위에서 queue는 javax.jms.Queue의 reference이며 messageSelector는 String Object이다.

그럼.. message selector를 만드는 방법을 함 보자.
 
▶ messageSelect 사용법

일단 여러소리 할 것 없이 예를 드는 것이 가장 빠르겠다.. (그치 않나?)
그런데 messageSelect로 조회를 하려면 뭔가 조회할꺼리가 있어야 하지 않겠는가?
그래서 myMessage.setStringProperty("NumberOfOrders", "2"); 이런식으 코딩으로 
Queue에 메시지를 넣을 때 미리 조건 검사할 내용을 Message에 넣어두면 되겠다.

그러면 이렇게 넣은 property를 가지고 message selector를 만들면 되는데.. 다음과 같다.

ex1) "NumberOfOrders > 1"

보면 알겠지만 위에서 setStringProperty로 넣은 NumberOfOrders에 대한 값으로 조회하는 것이다 
이것이 1보다 큰놈을 찾는것으로 알면되겠다. 어떤가 쉽지 않은가?
아직 아닌가?

어째꺼나 다음예제를 보면.

ex2) "phone LIKE '12%3'

위의 예제는 phone이라는 놈이 12로 시작해서 3으로 끝나는걸 찾는거다. 
대충 눈치챘겠지만 %는 여러문자를 지칭한다.

더 자세한 사용법은 
http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/jms/Message.html
에서 찾아보시면 되겠다.

보면 아시겠지만. , JMSPriority, JMSMessageID, JMSTimestamp, JMSCorrelationID, and JMSType.
JMSMessageID, JMSCorrelationID, , JMSType 요런걸로도 검색할 수 있다.

▶ messageSelect로는 뭘하나여?

물론 사용하시는 분 마음일테지만, 현 프로젝트에서 어떤 방식으로 사용되는가가 
도움이 될지 몰라 이렇게 적어볼라구 한다.
현재 필자는 모회사의 EAI프로젝트에 참여하고 있다. 
WLI(Weblogic Integration)이 사용되고 있고, WLI의 BPM(Business Process Manager - 맞나?)를 
사용하고 있는데. 이놈의 작동법이 어떤고 하니, 클라이언트
(그냥 단순한 사용자가 아니라, AS400 , SAP등의 System이 되겠다.)가 처리해야할 
message를 날리면 BMP Queue에 쌓이게 된다. 

그리고 그렇게 쌓인 Message는 BPM process에 의해서 해당 Business process(Work flow)가 
실행되게 되는것인데, 이곳에서 요구하는 것은 이 BPM Queue에 대한 모니터링을 하고 싶어 한다. 
물론 weblogic console에서도 JMS를 모니터링 할 수는 있으니. 

그내용은 다음과 같으니. 왜 따로 필요한지는 알 수 있을것이다.




때문에 어떠한 내용이 들어왔는지를 모니터링 하는 놈을 만들게 되었고,
이때 QueueBrowser를 사용하여 실제 message는 소비하지 않으면서 
message를 조회 검색할 수 있는것이다. 

또한 만일 BPM에서 Error가 발생했을경우 (단지 System적인 error뿐만 아니라 업무상의
Logic에러등도 포함) 해당 input에 대항 정보와 error정보를 다른 Queue에 넣어놓구. 
관리자에게 메일을 때리면, 관리자는 해당 메시지를 찾아 보고(이때도 필요하다) 해당 메시지를
다시 수동으로 처리하거나, 폐기(Logging정도)를 할 수도 있는것이다.

▶ 마무리 지으며

아무리 간단한 아티클과 소스라 하여도 실제로 필요로 할땐 찾기 어려운법을꺼다. 
놀새님의 노력으로 이루어진 사이트에 조금이나마 여러분께 도움이 되는 
아티클이 되길 간절히 바랄뿐이다.

감사합니다~(놀새~)

 
1
References
 
Copyright ⓒ 2003 www.javapattern.info & www.jlook.com, an jLOOK co.,LTD