4.2. 消息驱动 Beans Controlled Delivery


JBoss EAP 提供三个属性来控制在特定 MDB 上主动接收消息:

4.2.1. delivery Active

消息驱动型 Bean(MDB)的发送活动配置指示 MDB 是否在接收消息。如果 MDB 未接收消息,则消息将根据主题或队列规则保存在队列或主题中。

您可以使用 XML 或注释配置 delivery-groupactive 属性,您可以在部署后使用管理 CLI 更改其值。默认情况下激活 active 属性,并在部署 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-groupactive 属性。这些管理操作动态更改 active 属性的值,为 MDB 启用或禁用交付。如果重新启动服务器,这种更改交付活跃值的方法不会保留。在运行时,连接到您要管理的实例,然后输入您要管理的 MDB 的路径。例如:

  • 进入您要管理的实例:

    cd deployment=helloworld-mdb.war/subsystem=ejb3/message-driven-bean=HelloWorldQueueMDB
  • 停止发送到 MDB:

    :stop-delivery
  • 开始交付到 MDB:

    :start-delivery
查看 MDB Delivery Active 状态

您可以使用管理控制台查看任何 MDB 的当前交付活跃状态:

  1. 选择 Runtime 选项卡,然后选择相应的服务器。
  2. 单击 EJB,再选择子资源,如 HelloWorldQueueMDB

结果

您看到的状态为 Delivery Active: true 或 Delivery Active: false

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部