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의 현재 제공 활성 상태를 볼 수 있습니다.
- Runtime(런타임 ) 탭을 선택하고 적절한 서버를 선택합니다.
-
EJB 를 클릭하고 하위 리소스(예:
HelloWorldQueueMDB)를 선택합니다.
결과
Delivery Active: true 또는 로 상태가 표시됩니다.
Delivery Active: false