4.2.2. 交付组
交付组提供了一种管理一组 MDB 的交付-主动 状态的方法。MDB 可以属于一个或多个交付组。只有 MDB 所属的所有交付组都处于活动状态时,才会启用消息发送。对于集群单例 MDB,消息发送仅在集群的单例节点中活跃,只有在与 MDB 关联的所有交付组都处于活动状态时。
您可以使用 XML 配置或管理 CLI 将交付组添加到 ejb3 子系统。
在 jboss-ejb3.xml 文件中配置 Delivery Group
<delivery> <ejb-name>MdbName<ejb-name> <delivery-group>passive</delivery-group> </delivery>
在服务器端,可以通过将其 active 属性设置为 true 来 启用 delivery-groups,或者将其 active 属性设置为 false 来禁用,如下例所示:
<delivery-groups> <delivery-group name="group" active="true"/> </delivery-groups>
使用管理 CLI 配置交付组
可以使用管理 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 {
...
}