반응형
JMS??
Java Message Service~!!
엔터프라이즈 기술에 대한 자바의 개념은 대폭 확대되어~~~
1) JNDI(Java Naming and Directory Interface) : 디렉토리 서비스
2) JMX(Java Management Extensions) : 네트워크 컴퓨터 장치에 접근
3) JMS(Java Message Service) : 각기 다른 메시지 기반 미들웨어(Message Oriented Middleware) 제품에 접근하기 위함
등이 있으며 그 중 JMS에 대해서 알아보겠다.
자바 메시지 서비스는 엔터프라이즈 메시징 벤더가 유연하고 보편적이면서 세련된 프로그래밍 모델을 자바 애플리케이션에 제공할 수 있도록 지원하기 위해 마련 된 자바 api 이다.
엔터프라이즈 메시징 시스템은
- 소프트웨어 애플리케이션들 간에 데이터를 전송하거나 이벤트를 통지하는 데 사용 한다.
이 말이 정말 핵심적인 말 인 것 같다.
JMS API에서 지원하고 있는 두 가지 프로그래밍 모델은??
1) 발행/구독 모델(publish-and-subscribe)
2) 지점간 연결(point-to-point)
출처) 아래의 그림은 네이버에서 검색하여 가져 옴을 알려드립니다.^-^
어딜가나 용어가 어렵다 ㅋㅋㅋ
■ 엔터프라이즈 메시징 시스템 또는 메시지 기반 미들웨어(MOM)
: 둘 이상의 애플리케이션 사이에서 메시지 형태로 정보를 교환한다.
목적지라 불리는 가상채널을 통해 메시지를 교환한다. 메시지를 보내면 메시지는
목적지를 주소로 갖게 된다.(특정 애플리케이션을 주소로 갖지는 않음)
그 목적지에 관심이 있어서 구독하거나 등록한 모든 애플리케이션은 그 메시지를
받을 수 있다.
■ JMS는 다른 많은 MOM 벤더에서 사용 할 수 있으면서 벤더에 독립적인 자바 API이다.
애플리케이션 개발자가 다른 많은 시세틈에 접근 할 때 같은 API를 재사용 한다는 점에서
JDBC와 비슷하다.
※ 엔터프라이즈 메시징 시스템이 어떻게 돌아가는가??? 매우 중요한 포인트이다^-^
■ 엔터프라이즈 메시징의 중요 개념
메시지가 한 시스템에서 다른 시스템으로 네트워크를 타고 비동기식(asynchronously) 전달 된다는 것!
비동기식??? 메시지를 보내는 측과 받는 측이 데이터를 받거나 처리 할 때 기다릴 필요가 없다는 것.
다시 말해 메시지를 보내놓고 다른 작업을 자유롭게 할 수 있다는 말이다.
애플리케이션 A 애플리케이션B
메시징 API ------ 메시지 기반 미들웨어 ----> 메시징 API
메시징 클라이언트 <----- ----- 메시징 클라이언트
■ 발행/구독 (publish-and-subscribe) / 지점간 연결(point-to-point) 모델에 대해 알아보자!
1) 발행/구독(1:多)
위의 그림을 다시 가져와서 보면..
토픽이라는 것이 보인다.
발행/구독에서 발행자는 토픽이라 불리는 가상 채널을 통해 많은 구독자에게 메시지를 전달한다.
메시지를 받는 구독자는 토픽을 구독 할 수있다.
발행/구독 메시징 모델은 구독자가 새로운 메시지를 받으려고 토픽에게 요청하거나 토픽에서
메시지를 가져오지 않아도 구독자에게 메시지를 자동적으로 브로드캐스트 해주는 큰 규모의
푸시 기반 모델(push-based model)이다.
2) 지점간 연결(1 -> 1)
JMS 클라이언트가 큐(queue)라고 알려진 가상 채널을 통해 동기적(synchrononusly) 또는
비동기적(asynchrononusly)으로 메시지를 주고 받을 수 있도록 해준다.
이 모델은 전통적으로 클라이언트에게 메시지를 자동으로 주는 대신, 큐를 통한 풀 또는 폴링 기반 모델
(pull or polling-based model)이다.
하지만 JMS는 지점간 연결 클라이언트가 발행/구독과 유사한 푸시 기반 모델을 사용 할 수 있는
옵션도 제공하고 있다.
주어진 큐 하나를 통해 받을 수 있는 수신자는 여럿 이지만, 메시지 하나는 한 수신자에게만 허락 된다!
이제껏 메시징 시스템이 2가지 모델을 가지고 있으며 어떻게 돌아가는지 알아보았다.
-끝-
반응형
'Language > Java' 카테고리의 다른 글
replace / replaceFirst, Caused by: java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0 (2) | 2013.08.01 |
---|---|
번들 property 만들기 (0) | 2013.05.10 |
MySQL+Apache Tomcat 6.0 JNDI Datasource How to (2) | 2012.12.12 |
JNDI란 정확히 뭔데?? (4) | 2012.12.12 |
[용어] JNDI (0) | 2012.11.12 |