4.2. Message-Driven Beans Controlled Delivery

JBoss EAP는 특정 MDB에서 메시지의 활성 수신을 제어하는 세 가지 특성을 제공합니다.

4.2.1. 제공(활성)

MDB(Message-driven Bean)의 전달 활성 구성은 MDB에서 메시지를 수신하고 있는지 여부를 나타냅니다. MDB에서 메시지를 수신하지 않으면 토픽 또는 큐 규칙에 따라 메시지가 대기열 또는 항목에 저장됩니다.

XML 또는 주석을 사용하여 delivery-group활성 특성을 구성할 수 있으며 관리 CLI를 사용하여 배포 후에 해당 값을 변경할 수 있습니다. 기본적으로 활성 특성이 활성화되고 메시지 전송은 MDB가 배포되는 즉시 수행됩니다.

jboss-ejb3.xml 파일에서 활성 상태로 전달 구성

jboss-ejb3.xml 파일에서 active 값을 false 로 설정하여 MDB가 배포되는 즉시 메시지를 받지 않을 것임을 나타냅니다.

<?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:d="urn:delivery-active:1.1"
    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>
        <d:delivery>
            <ejb-name>HelloWorldQueueMDB</ejb-name>
            <d:active>false</d:active>
        </d:delivery>
    </assembly-descriptor>
</jboss:ejb-jar>

애플리케이션의 모든 MDB에 활성 값을 적용하려면 ejb-name 대신 와일드카드 * 를 사용할 수 있습니다.

주석을 사용하여 활성 배달 구성

org.jboss.ejb3.annotation.DeliveryActive 주석을 사용할 수도 있습니다. 예를 들면 다음과 같습니다.

@MessageDriven(name = "HelloWorldMDB", activationConfig = {
 @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
 @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/HELLOWORLDMDBQueue"),
 @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge") })
@DeliveryActive(false)

public class HelloWorldMDB implements MessageListener {
    public void onMessage(Message rcvMessage) {
      // ...
    }
}

Maven을 사용하여 프로젝트를 빌드하는 경우 프로젝트의 pom.xml 파일에 다음 종속성을 추가해야 합니다.

<dependency>
    <groupId>org.jboss.ejb3</groupId>
    <artifactId>jboss-ejb3-ext-api</artifactId>
    <version>2.2.0.Final</version>
</dependency>
관리 CLI를 사용하여 활성 상태로 배달 구성

관리 CLI를 사용하여 배포 후에 delivery-group활성 특성을 구성할 수 있습니다. 이러한 관리 작업은 활성 특성의 값을 동적으로 변경하여 MDB에 대한 전달을 활성화하거나 비활성화합니다. 서버를 다시 시작하면 제공 활성 값을 변경하는 이 방법이 유지되지 않습니다. 런타임에 관리할 인스턴스에 연결한 다음 배달을 관리할 MDB 경로를 입력합니다. 예를 들면 다음과 같습니다.

  • 관리할 인스턴스로 이동합니다.

    cd deployment=helloworld-mdb.war/subsystem=ejb3/message-driven-bean=HelloWorldQueueMDB
  • MDB로의 배달을 중지하려면 다음을 수행합니다.

    :stop-delivery
  • MDB에 대한 배달을 시작하려면 다음을 수행합니다.

    :start-delivery
MDB 제공 활성 상태 보기

관리 콘솔을 사용하여 모든 MDB의 현재 제공 활성 상태를 볼 수 있습니다.

  1. Runtime(런타임 ) 탭을 선택하고 적절한 서버를 선택합니다.
  2. EJB 를 클릭하고 하위 리소스(예: HelloWorldQueueMDB) 를 선택합니다.

결과

Delivery Active: true 또는 Delivery Active: false 로 상태가 표시됩니다.