자카르 메시징
Jakarta Messaging자카르타 메시징 API(이전의 자바 메시지 서비스 또는 JMS API)는 메시지 지향 미들웨어를 위한 자바 애플리케이션 프로그래밍 인터페이스(API)이다.그것은 생산자-소비자 문제를 처리할 수 있는 일반적인 메시징 모델을 제공하며, 소프트웨어 시스템 간의 메시지 송수신을 용이하게 하는데 사용할 수 있다.[1]자카르 메시징은 자카르타 EE의 일부분으로, 원래 자바 커뮤니티 프로세스에 의해 안내되기 전에 선 마이크로시스템스에서 개발한 사양으로 정의되었다.[2]
메시징에 대한 일반적인 생각
메시징은 느슨하게 결합된 분산 통신의 한 형태로서, 이 맥락에서 '통신'이라는 용어는 소프트웨어 요소들 간의 메시지 교환으로 이해될 수 있다.메시지 지향 기술은 중간 요소의 도입에 의해 긴밀하게 결합된 통신(TCP 네트워크 소켓, CORBA 또는 RMI 등)을 완화하려고 시도한다.이 접근방식은 소프트웨어 구성요소가 서로 간접적으로 통신할 수 있도록 한다.이것의 이점은 메시지 송신자가 수신자에 대한 정확한 지식을 가질 필요가 없다는 것이다.
메시징의 장점은 이기종 플랫폼을 통합하고, 시스템 병목 현상을 줄이며, 확장성을 높이고, 변화에 보다 신속하게 대응할 수 있다는 것이다.[3]
버전 이력
- JMS 1.0[4]
- JMS 1.0.1 (1998년 10월 5일)[4]
- JMS 1.0.1a (1998년 10월 30일)[5][6]
- JMS 1.0.2 (1999년 12월 17일)[7]
- JMS 1.0.2a (1999년 12월 23일)[8]
- JMS 1.0.2b(2001년 8월 27일)[9]
- JMS 1.1(2002년 4월 12일)[10]
- JMS 2.0 (2013년 5월 21일)[11][12]
- JMS 2.0a(2015년 3월 16일)[13][14]
JMS 2.0은 현재 JSR 343으로 자바 커뮤니티 프로세스에 따라 유지되고 있다.[15]
JMS 3.0은 자카르타 EE의 일부로 초기 개발 중에 있다.[16]
요소들
다음은 JMS 요소:[17]
- JMS 제공자
- 메시지 지향 미들웨어(MOM)를 위한 JMS 인터페이스의 구현. 제공자는 자바 JMS 구현 또는 비 자바 MOM에 대한 어댑터로 구현된다.
- JMS 클라이언트
- 메시지를 생성 및/또는 수신하는 응용 프로그램 또는 프로세스.
- JMS 제작자/출판사
- 메시지를 만들고 보내는 JMS 클라이언트.
- JMS 소비자/가입자
- 메시지를 수신하는 JMS 클라이언트.
- JMS 메시지
- JMS 클라이언트 간에 전송되는 데이터를 포함하는 개체.
- JMS 대기열
- 한 명의 소비자만 전송되어 읽기를 기다리고 있는 메시지를 포함하는 준비 영역.이름 대기열에서 알 수 있듯이, 메시지는 보낸 순서대로 전달된다.JMS 대기열은 각 메시지가 한 번만 처리되도록 보장한다.
- JMS 항목
- 여러 구독자에게 배달되는 메시지를 게시하기 위한 배포 메커니즘.
모델
JMS API는 두 가지 구별되는 모델을 지원한다.
- 포인트 투 포인트
- 게시 및 구독
점대점 모형
포인트 투 포인트 메시징 시스템에서는 메시지가 들어오는 메시지의 대기열을 유지하는 개별 소비자에게 전달된다.이 메시징 유형은 메시지 큐, 송신자 및 수신자의 개념에 기초하여 작성된다.각 메시지는 특정 대기열로 주소가 지정되고, 수신 클라이언트는 메시지를 보관하기 위해 설정된 대기열에서 메시지를 추출한다.어느 정도의 생산자가 큐에 메시지를 보낼 수 있지만, 각각의 메시지는 한 소비자가 전달하고 소비할 수 있다.대기열은 메시지가 소비될 때까지 또는 메시지가 만료될 때까지 발송된 모든 메시지를 보존한다.메시지를 소비하도록 등록된 소비자가 없는 경우, 대기열은 소비자가 메시지를 소비하도록 등록할 때까지 메시지를 보관한다.
게시 및 구독 모델
게시 및 구독 모델은 특정 메시지 "주제"에 대한 메시지를 게시하는 것을 지원한다.가입자는 특정 메시지 항목에 게시된 메시지 수신에 대한 관심을 등록할 수 있다.이 모델에서는 출판사도 구독자도 서로에 대해 알지 못한다.이것에 대한 좋은 비유는 익명의 게시판이다.
- 0명 이상의 소비자가 메시지를 받는다.
- 출판사와 구독자 사이에는 타이밍 의존성이 있다.게시자는 클라이언트가 구독할 메시지 주제를 만들어야 한다.가입자는 지속적 가입이 성립되지 않는 한 메시지를 받기 위해 지속적으로 활동해야 한다.이 경우 가입자가 연결되지 않은 상태에서 게시된 메시지는 다시 연결될 때마다 재분배된다.
JMS는 데이터 제공의 전송 계층으로부터 애플리케이션을 분리하는 방법을 제공한다.동일한 Java 클래스를 사용하여 원하는 제공자의 JNDI(Java Naming and Directory Interface) 정보를 사용하여 다른 JMS 제공자와 통신할 수 있다.클래스는 먼저 연결 팩토리를 사용하여 대기열이나 항목에 연결한 다음 메시지를 채워서 보내거나 게시한다.수신 측에서, 고객은 메시지를 받거나 구독한다.
URI 구성표
RFC 6167은 다음과 같이 정의한다.jms:
Java Message Service에 대한 URI 구성.
프로바이더
JMS를 사용하려면 세션, 대기열 및 주제를 관리할 수 있는 JMS 공급자가 있어야 한다.Java EE 버전 1.4부터는 JMS 제공자가 모든 Java EE 애플리케이션 서버에 포함되어야 한다.이는 해당 버전에서 처음 사용 가능하게 된 자바 EE 커넥터 아키텍처의 메시지 유입 관리를 사용하여 구현할 수 있다.
다음은 일반적인 JMS 제공자의 목록이다.
- 아마존 SQS의 자바 메시징 라이브러리
- 아파치 액티브MQ
- Apache Qpid(AMQP[18] 사용)
- IBM MQ(이전의 MQSeries, WebSphere MQ)
- IBM WebSphere Application Server의 서비스 통합 버스(SIBUS)[19]
- JBoss 메시징 및 JBoss의 HornetQ
- OW2 컨소시엄의 JORAM
- Oracle에서 메시지 대기열 열기
- OpenJMS from the Open JMSJMS 그룹
- Oracle WebLogic Server 및 Oracle AQ
- Pivotal 소프트웨어의 RabbitMQ
- TIBCO 소프트웨어의 TIBCO 클라우드 메시징[20]
- TIBCO 소프트웨어의 TIBCO 엔터프라이즈 메시지 서비스[21]
참고 항목
- 메시지 구동 콩
- 메시지 대기열 - JMS의 기본 개념
- 서비스 지향 아키텍처
- JMS API를 구현하지 않는 메시징 기술에는 다음이 포함된다.
- AMQP(Advanced Message Queuing Protocol) - 다중 독립 구현을 통한 표준화된 메시지 대기열 프로토콜
- DDS(Data Distribution Service) - OMG(Object Management Group)는 출판사와 구독자 간의 상호 운용성을 입증한 10개 이상의 구현을 통해 표준화된 실시간 메시징 시스템
- 마이크로소프트 메시지 큐 - 에 대해 구현된 유사한 기술.NET Framework
참조
- ^ 커리, 에드워드2004. "메시지 지향 미들웨어"미들웨어 for Communications, Ed.쿠세이 H 마흐무드, 1-28영국 치체스터: 존 와일리 앤 선즈. 도이:10.1002/0470862084.ch1. ISBN978-0-470-86206-3
- ^ "JSR 914: Java Message Service (JMS) API". The Java Community Process Program. Retrieved July 31, 2018.
- ^ 리차드 외 연구진, 3-5페이지.
- ^ a b "Java Message Service" (PDF). Sun Microsystems. October 5, 1998. Archived (PDF) from the original on 1999-02-24. Retrieved July 31, 2018.
- ^ "Java Message Service Documentation". Sun Microsystems. October 30, 1998. Archived from the original on 1999-02-24. Retrieved July 31, 2018.
- ^ "Java Message Service Source - Version 1.0.1a". Sun Microsystems. October 29, 1998. Archived from the original (ZIP) on August 16, 2000. Retrieved July 31, 2018.
- ^ "Java Message Service" (PDF). Sun Microsystems (published December 17, 1999). November 9, 1999. Archived (PDF) from the original on 2000-08-23. Retrieved July 31, 2018.
- ^ "Java Message Service Documentation". Sun Microsystems. December 23, 1999. Archived from the original on 2000-02-29. Retrieved July 31, 2018.
- ^ "Java Message Service" (PDF). Sun Microsystems. August 27, 2001. Retrieved July 31, 2018.
- ^ "Java Message Service" (PDF). Sun Microsystems. April 12, 2002. Retrieved July 31, 2018.
- ^ "Java Message Service" (PDF). Oracle. March 20, 2013. Retrieved July 31, 2018.
- ^ "JMS 2.0 Final Release". Java Message Service Specification. June 9, 2017. Retrieved July 31, 2018.
- ^ "Java Message Service" (PDF). Oracle. March 10, 2015. Retrieved July 31, 2018.
- ^ "JMS 2.0 errata release (Rev a)". Java Message Service Specification. July 5, 2017. Retrieved July 31, 2018.
- ^ "JSR 343: Java Message Service 2.0". The Java Community Process Program. Retrieved July 31, 2018.
- ^ Monson-Haefel, Richard (December 6, 2018). "JMS 3.0: Get Involved!". Tomitribe. Retrieved July 17, 2020.
- ^ JMS(Java Message Service)
- ^ "Apache Qpid™: Open Source AMQP Messaging".
- ^ Wallis, Graham. "Choosing a messaging system: WebSphere MQ vs. the WebSphere Application Server Service Integration Bus". IBM developerWorks.
- ^ "TIBCO Cloud™ Messaging TIBCO Software".
- ^ "TIBCO Enterprise Message Service™".
추가 읽기
- Richards, Mark; Richard Monson-Haefel; David A. Chappell (2009). Java Message Service, Second Edition. O'Reilly. ISBN 978-0-596-52204-9.
외부 링크
![]() | Wikibook Java EE Programming에는 Java Message Service라는 주제에 대한 페이지가 있다. |