Message Queue는 JMS 개방형 표준을 구현하는 JMS 공급자 이다.
JMS 개념은 MQ 방식을 이해하는데 기본이 된다.
*메시지 서비스의 기본 구조
헤더 값
메시지의 대상, 만료시간, 메시지 우선 순위를 담고 있으며
이는 메시지 생성자 클라이언트에 의해서 자동으로 생성이 된다.
등록 정보
메시지는 등록 정보 라는 선택적 헤더 정보를 포함시킬 수 있다.
등록 정보는 등록이름 과 등록정보 값 쌍으로 지정된다.
데이터를 작성한 프로세스 정보, 작성된 시간, 데이터 각 부분구조, 메시지 압축여부, 메시지 처리 방법 등을 담을 수 있다.
메시지 본문 유형
여러 방식으로 메시지를 보낼 수 있다.
StreamMessage | 본문이 Java 프리미티브 값의 스트림을 포함하는 메시지. 이 메시지는 순차적으로 채워지고 읽혀집니다. |
MapMessage | 본문에 일련의 이름-값 쌍을 포함하는 메시지. 항목 순서는 정의되지 않습니다. |
TextMessage | 본문에 Java 문자열을 포함하는 메시지. 예를 들어, XML 메시지 |
ObjectMessage | 본문에 일련화된 Java 객체를 포함하는 메시지 |
BytesMessage | 본문에 해석되지 않은 바이트의 스트림이 포함된 메시지 |
JMS 프로그래밍 모델
기본적으로 비동기식 메시징 서비스 구조를 지원한다.
JMS 클라이언트는 JMS 메시지 서비스를 통해 메시지를 교환한다.
1. JMS 클라이언트는 연결 팩토레 객체(ConnectionFactory)를 사용하여 JMS 메시지 서버와 메시지를 송수신할 연결을 만든다.
연결객체(Connection)는 클라이언트와 메시지 서버간의 활성 연결을 나타낸다.
2. 연결되면 통신 자원 할당 및 클라이언트 인증이 이루어진다. 대부분의 클라이언트는 단일 연결을 사용하여 모든 메시징을 수행한다.
3. 연결은 세션객체(Session)를 생성할 때 사용한다. 세션은 메시지 생성 및 사용을 위한 단일 스레드 컨텍스트 이다. 메시지 생성&보내기&받기&메시지 생성자&메시지 사용자 를 생성할 때 사용하며, 전달할 메시지의 일련 순서를 정의한다.
세션은 관리 대상 객체 옵션, 트랜잭션을 통해 안정적인 전달을 지원한다.
4. 메시지 생성자 객체(MessageProducer)를 사용하여 API에서 대상 객체로 표시되는 물리적 대상으로 메시지를 보낸다.
5. 메시지 사용자 객체(MessageConsumer)를 사용하여 4번과는 반대로 메시지를 받을 수 있다.
메시지 사용자는 메시지 선택기를 사용하여 메시지 서비스가 특정 선택 기준과 일치하는 등록 정보를 갖는 메시지만 전달 하도록 할수 있다.
메시지 사용자는 동기식 또는 비동기식 메시지 사용을 지원한다.
-동기식 사용은 메시지 전달을 한 후, 다음 메시지를 사용해야 함을 의미한다.
-비동기식 사용은 메시지가 사용자용으로 등록된 MessageListener로 자동 전달됨을 의미한다.
세션 스레드가 메시지 수신기 객체의 onMessage() 메소드를 호출하면 클라이언트가 한 메시지를 사용한다.
참고
'Language > 자바' 카테고리의 다른 글
[자바] 20. 날짜 이슈 Calender, Date, LocalDate (0) | 2021.12.20 |
---|---|
[자바]19. public static void main(String[] args) 의 이유? (0) | 2021.12.09 |
[자바]17. Message Queue의 구조 (0) | 2021.12.01 |
[자바]16. Comparable vs Comparator (0) | 2021.11.23 |
[자바] 15. 잘 사용되는 아스키코드 및 진수법 (0) | 2021.11.22 |