4.2.2. 제공 그룹

제공 그룹은 MDB 그룹의 제공-활성 상태를 관리하는 방법을 제공합니다. MDB는 하나 이상의 배달 그룹에 속할 수 있습니다. 메시지 전송은 MDB가 속한 모든 배달 그룹이 활성화된 경우에만 활성화됩니다. 클러스터형 Singleton MDB의 경우 MDB와 연결된 모든 배달 그룹이 활성화된 경우에만 메시지 배달이 클러스터의 Singleton 노드에서만 활성화됩니다.

XML 구성 또는 관리 CLI를 사용하여 ejb3 하위 시스템에 전달 그룹을 추가할 수 있습니다.

jboss-ejb3.xml 파일에서 전달 그룹 구성
<delivery>
  <ejb-name>MdbName<ejb-name>
  <delivery-group>passive</delivery-group>
</delivery>

서버 측에서 실행 그룹은 활성 특성을 true 로 설정하거나 아래 예제와 같이 활성 특성을 false 로 설정하여 비활성화할 수 있습니다.

<delivery-groups>
  <delivery-group name="group" active="true"/>
</delivery-groups>
관리 CLI를 사용하여 배달 그룹 구성

delivery-group 의 상태는 관리 CLI를 사용하여 업데이트할 수 있습니다. 예를 들면 다음과 같습니다.

/subsystem=ejb3/mdb-delivery-group=group:add
/subsystem=ejb3/mdb-delivery-group=group:remove
/subsystem=ejb3/mdb-delivery-group=group:write-attribute(name=active,value=true)

jboss-ejb3.xml 파일에서 배달을 활성화하거나 주석을 사용하면 서버 재시작 시 지속됩니다. 그러나 관리 CLI를 사용하여 제공을 중지하거나 시작하면 서버 재시작 시 유지되지 않습니다.

주석을 사용하여 여러 배달 그룹 구성

그룹에 속하는 각 MDB 클래스에서 org.jboss.ejb3.annotation.DeliveryGroup 주석을 사용할 수 있습니다.

@MessageDriven(name = "HelloWorldQueueMDB", activationConfig = {
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/HELLOWORLDMDBQueue"),
        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge") })
@DeliveryGroup("delivery-group-1")
@DeliveryGroup("delivery-group-2")
public class HelloWorldQueueMDB implements MessageListener {
...
}