激活规范属性

连接性 > 容器 > 资源适配器 > 激活规范属性

激活规范用于配置消息传递到 MDB。ejb-jar.xml 部署描述符需要包含一个元素在元素中,例如

<activation-config>
    <activation-config-property>
       <activation-config-property-name>destination</activation-config-property-name>
       <activation-config-property-value>queue.testQueue</activation-config-property-value>
    </activation-config-property>
    <activation-config-property>
       <activation-config-property-name>destinationType</activation-config-property-name>
       <activation-config-property-value>javax.jms.Queue</activation-config-property-value>
    </activation-config-property>
</activation-config>

此处,destination 的值为所需目标的物理名称。destinationType 的值为定义目标类型的类名。它应该是 javax.jms.Queue 或 javax.jms.Topic。
  可以配置的激活规范属性如下

属性名称 必需 默认值 描述
acknowledgeMode 自动确认 要使用的 JMS 确认模式。有效值为:自动确认或 Dups-ok-acknowledge
clientId 在资源适配器中设置 要使用的 JMS 客户端 ID(仅在持久主题中真正需要)
destinationType null 目标类型;队列或主题
destination null 目标名称(队列或主题名称)
enableBatch false 用于启用事务批处理以提高性能
maxMessagesPerBatch 10 每个事务批处理的消息数量
maxMessagesPerSessions 10 这实际上是订阅的预取大小。(是的,命名不好)。
maxSessions 10 要使用的并发会话的最大数量
messageSelector null 用于订阅的 JMS 消息选择器,以执行基于内容的路由,过滤消息
noLocal false 仅在主题订阅中需要;指示是否应在订阅中包含本地发布的消息
password 在资源适配器中设置 JMS 连接的密码
subscriptionDurability NonDurable 是否需要持久(主题)订阅。有效值为:Durable 或 NonDurable
subscriptionName null 持久订阅的名称。仅用于持久主题,并与 clientID 结合使用以唯一标识持久主题订阅
userName 在资源适配器中设置 JMS 连接的用户
useRAManagedTransaction false 通常,资源适配器将消息传递到由容器管理的端点。通常,此容器希望成为控制传入消息传递的事务的容器。但是,有时您希望传递到更简单的容器系统,该系统不会控制传入事务。在这种情况下,如果您将 useRAManagedTransaction 设置为 true,则资源适配器将在没有从 MessageListener 生成异常的情况下提交事务,并在抛出异常时回滚。
initialRedeliveryDelay 1000 重新传递开始之前的延迟。也可以在 ResourceAdapter 上配置
maximumRedeliveries 5 重新传递的最大次数,或 -1 表示没有最大次数。也可以在 ResourceAdapter 上配置
redeliveryBackOffMultiplier 5 如果启用指数后退,要使用的乘数。也可以在 ResourceAdapter 上配置
redeliveryUseExponentialBackOff false 启用指数后退。也可以在 ResourceAdapter 上配置
useJndi false 当为 true 时,将 destination 作为 jndi 名称使用
最大化 MDB 的吞吐量

如果您想最大化 MDB 的吞吐量,您应该将 maxSessions 设置为相当大的值以提高并发性。然后将 maxMessagesPerSessions 设置为一个较大的值(例如)1000。

这假设您有大量可用的消息(例如超过 maxSessions * maxMessagesPerSession)。否则,预取 最终会 使其他使用者饿死

因此,如果您没有那么多的可用消息,但它们可能需要一段时间才能处理,那么您可能希望将 maxMessagesPerSessions 设置为较低的值。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛徽标和 Apache ActiveMQ 项目徽标是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 授权。