4.2.3. 클러스터형 Singleton MDB
MDB를 클러스터된 Singleton으로 식별하고 클러스터에 배포하면 하나의 노드만 활성화됩니다. 이 노드는 메시지를 직렬로 사용할 수 있습니다. 서버 노드가 실패하면 클러스터된 Singleton MDB의 활성 노드가 메시지 사용을 시작합니다.
MDB를 클러스터된 Singleton으로 식별
다음 절차 중 하나를 사용하여 MDB를 클러스터된 Singleton으로 식별할 수 있습니다.
아래 예와 같이 clustered-singleton XML 요소를 사용합니다.
<?xml version="1.1" encoding="UTF-8"?> <jboss:ejb-jar xmlns:jboss="http://www.jboss.com/xml/ns/javaee" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c="urn:clustering:1.1" xmlns:d="urn:delivery-active:1.2" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-ejb3-2_0.xsd http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd" version="3.1" impl-version="2.0"> <assembly-descriptor> <c:clustering> <ejb-name>HelloWorldQueueMDB</ejb-name> <c:clustered-singleton>true</c:clustered-singleton> </c:clustering> <d:delivery> <ejb-name>*</ejb-name> <d:group>delivery-group-1</d:group> <d:group>delivery-group-2</d:group> </d:delivery> </assembly-descriptor> </jboss:ejb-jar>-
MDB 클래스에서
@org.jboss.ejb3.annotation.ClusteredSingleton을사용합니다. 이 절차에는 서버에 추가 구성이 필요하지 않습니다. 클러스터형 환경에서 서비스를 실행해야 합니다.
클러스터의 어떤 노드 가 그룹을 활성화해야 합니다. 서버에서 Singleton 마스터가 되도록 선택되었는지 모르는 경우 클러스터의 모든 노드에서 특히 전체 클러스터에서 제공Singleton 마스터 로 노드를 선택하고 해당 노드에 필요한 delivery-group 이 활성화되지 않은 경우 클러스터의 노드가 메시지를 받지 않습니다.
JBoss EAP와 함께 제공되는 messaging-clustering-singleton 빠른 시작은 통합된 Apache ActiveMQ Artemis와의 클러스터링 사용을 보여줍니다. helloworld-mdb 빠른 시작과 동일한 소스 코드를 사용하며 클러스터형 Singleton으로 실행하는 구성에서만 차이가 있습니다. 이 빠른 시작에는 두 개의 Jakarta Messaging 리소스가 포함되어 있습니다.
-
Java 네이밍 및 디렉터리 인터페이스에
java:/queue/HELLO라는 큐WORLDMDBQueue 바인딩된 HELLOWORLDMDBQueue -
Java Naming 및 Directory Interface에서
java:/topic/HELLOWORLDMDBTopic으로이라는 항목바인딩된 HELLOWORLDMDBTopic
두 파일 모두 jboss-ejb3.xml 파일에 지정된 singleton 구성이 포함되어 있습니다.
<c:clustering>
<ejb-name>*</ejb-name>
<c:clustered-singleton>true</c:clustered-singleton>
</c:clustering>
<ejb-name> 요소의 와일드카드 별표 * 는 애플리케이션에 포함된 모든 MDB가 클러스터형 Singleton임을 나타냅니다. 결과적으로 클러스터에서 하나의 노드만 특정 시간에 이러한 MDB를 활성화하게 됩니다. 이 활성 노드를 종료하면 클러스터의 다른 노드가 MDB가 있는 활성 노드가 됩니다. 그러면 Singleton 공급자가 됩니다.
jboss-ejb3.xml 파일에서 delivery 그룹에 대한 구성도 찾을 수 있습니다.
<d:delivery>
<ejb-name>HelloWorldTopicMDB</ejb-name>
<d:group>my-mdb-delivery-group</d:group>
</d:delivery>
이 경우 MDB 중 HelloWorldTopicMDB 만 배달 그룹과 연결됩니다. MDB에서 사용하는 모든 배달 그룹은 ejb3 하위 시스템 구성에서 구성해야 합니다. 배달 그룹은 활성화 또는 비활성화할 수 있습니다. 클러스터 노드에서 배달 그룹을 비활성화하면 해당 배달 그룹에 속하는 모든 MDB가 해당 클러스터 노드에서 비활성화됩니다. 클러스터되지 않은 환경에서 배달 그룹을 사용하는 경우 배달 그룹이 활성화될 때마다 MDB가 활성화됩니다.
전송 그룹을 Singleton 프로바이더와 함께 사용하는 경우 해당 노드에 배달 그룹이 활성화된 경우에만 Singleton 공급자 노드에서 MDB를 활성화할 수 있습니다. 그렇지 않으면 해당 노드에서 MDB가 비활성화되고 클러스터의 다른 모든 노드가 비활성화됩니다.
메시징 클러스터링 서버를 구성하고 코드 예제를 검토하는 방법에 대한 자세한 지침은 이 빠른 시작에 포함된 README.html 파일을 참조하십시오.
JBoss EAP 빠른 시작을 다운로드하고 사용하는 방법에 대한 자세한 내용은 JBoss EAP Getting Started Guide 의 빠른 시작 예제 사용 섹션을 참조하십시오.