> Java > java지도 시간 > 본문

느슨하게 결합된 메시지를 사용한 비동기 통신 프로세스란 무엇입니까?

零下一度
풀어 주다: 2017-06-28 09:38:00
원래의
1450명이 탐색했습니다.

메시지란 무엇입니까

느슨하게 결합된 비동기 통신 프로세스

1. 메시지 지향 미들웨어(MOM): 메시지를 보내는 사람을 생산자라고 합니다. 메시지를 수신하는 구성 요소 호출된 소비자

2 메시지 모델:
a. 지점 간: 대상이 대기열이 되고 메시지는 한 번만 소비될 수 있습니다
b. 게시-구독: 대상이 제목이 되고, 소비자는 구독자라고 불리며, 메시지는 임의의 번호로 소비될 수 있습니다

자바 메시지 서비스

1. JMS API: Java를 사용하여 MOM(메시지 미들웨어)에 액세스하는 통합된 표준 방법을 제공합니다

2. 메시지 생성자 프로세스 개발:
a. 종속성 주입을 사용하여 연결 팩토리 ConnectionFactory 및 대상 대상 객체를 얻습니다
b. 연결 팩토리의 createConnection을 사용하여 연결을 엽니다
c. Connection의 createSession을 사용하여 세션을 생성하고 트랜잭션 매개변수를 지정합니다
d. 세션의 createProducer를 사용하여 화물 대기열 Producer
를 생성합니다. e. 세션의 createMessage를 사용하여 메시지를 생성하고
를 설정합니다. f. 화물 대기열 생산자의 보내기를 사용하여 메시지를 보냅니다
g. 리소스 공개
참고: 위 프로세스는 JavaEE 6을 기반으로 합니다. JavaEE 7은 더 간단한 A 개발 프로세스를 제공합니다

3. 메시지 인터페이스: 메시지 헤더, 메시지 속성, 메시지 구현 클래스: ObjectMessage는 객체를 전송하고, ByteMessage는 바이트를 전송하고, MapMessage는 Map을 전송하고, StreamMessage는 스트림 데이터를 전송하고, TextMessage는 텍스트를 전송합니다.

메시지 구동 Bean(MDB)

1. 장점: 멀티스레딩, 단순화된 메시지 코드

2. 디자인 원칙:

a. MDB 클래스는 메시지 수신기 인터페이스를 직접 또는 간접적으로 구현해야 합니다

b. 구체적이고 공개적이어야 하며 최종 또는 추상 클래스일 수 없습니다
c. POJO여야 하며 다른 MDB의 하위 클래스일 수 없습니다
d. 매개변수가 없는 생성자가 있어야 합니다
e. 최종적인 방법은 있을 수 없습니다
f. MDB 인스턴스가 발생하면 종료되므로 런타임 예외가 발생하지 않습니다.

3. MDB를 사용하여 소비자 프로세스 개발

a. @MessageDriven 주석을 사용하여 클래스를 MDB로 표시하고 MDB 구성을 지정합니다

b. MessageListener 인터페이스를 구현하고 onMessage 메소드를 구현합니다
c. onMessage에 로직을 구현하세요

4. @MessageDriven: 주석이 달린 클래스는 MDB입니다. name은 MDB의 이름을 지정합니다. messageListenerInterface는 MDB에서 구현되는 메시지 인터페이스를 지정합니다(인터페이스는 클래스에서 직접 구현될 수 있음). 독점 구성 속성을 지정합니다

5. MessageLisener: MDB를 메시지 소비자로 등록하고 다양한 시나리오에 따라 다양한 리스너 인터페이스를 구현합니다.

6. ActivationConfigProperty: 메시징 시스템의 구성 정보를 구성합니다

a. 목적지 유형: MDB가 대기열 또는 주제를 수신하는지 여부를 컨테이너에 알립니다

b.connectionFactoryJndiName: MDB
의 JMS 연결을 생성하는 데 사용되는 연결 팩토리 JDNI를 지정합니다. c.destianName: 청취 대상을 지정하세요
d.acknowledgeMode: JMS 세션 확인 모드를 지정합니다
e. subscribeDurability: 지속 구독자로 설정하는 데 사용됩니다
f. messageSelector: 메시지 필터링

7. MDB 수명 주기:

a. MDB 인스턴스 생성 및 설정

b. 리소스 주입
c. 관리형 풀에 저장
d. 메시지가 도착한 목적지를 감지하면 풀에서 유휴 빈을 꺼냅니다
e. 메시지 리스너 메소드, 즉 onMessage 메소드를 실행합니다
f. onMessage 메소드가 실행되면 유휴 Bean을 다시 풀에 저장합니다
g. 필요에 따라 풀에서 빈을 취소/파기하세요

8. MDB에서 메시지 보내기: JNDI에서 대기열에 삽입하고 팩토리 객체에 연결한 다음 Java 메시지와 동일하게 작동합니다

9. 트랜잭션 관리: 일반적인 상황에서는 onMessage 메소드 이전에 트랜잭션이 시작되고 메소드가 끝날 때 트랜잭션이 제출됩니다. 트랜잭션은 메시지 컨텍스트 객체를 통해 롤백될 수 있습니다.

MDB 모범 사례

1. 사용량에 따라 MDB 사용 여부를 선택하세요

2. 메시지 모델 선택: PTP 또는 게시-구독은 프로그램 설계 중에 결정해야 하지만 다행히 둘 사이를 전환하려면 구성 수정만 하면 됩니다

3. 모듈화 유지: MDB의 onMessage 메소드는 비즈니스 로직을 처리해서는 안 됩니다. 비즈니스 로직은 해당 세션 빈에 배치되어야 하며 MDB는 해당 세션 빈 호출을 담당해야 합니다. 4. 필터를 최대한 활용하거나 장면에 따라 대상을 구분하세요

5. 메시지 유형 선택: 사용 시나리오에 따라 전송에 사용되는 메시지 유형을 선택하세요

6. 유해한 메시지에 주의하세요. 사용할 수 없지만 롤백된 메시지는 수신/롤백의 무한 루프에 빠지게 됩니다. 개별 제조업체에는 데드 메시지에 대한 자체 구현이 있지만 프로그래밍할 때는 주의해야 합니다

7. MDB 풀 크기 구성: 시나리오 및 요구 사항에 따라 구성

Reference

EJB 3 실행, 제2판

위 내용은 느슨하게 결합된 메시지를 사용한 비동기 통신 프로세스란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿