有时,除了与授权和身份验证相关的正常安全设置外,设置对某些用户可以执行的操作的特定限制非常有用。例如,限制用户可以创建的连接数或用户可以创建的队列数。本章将解释如何配置此类限制。

1. 通过资源限制设置配置限制

以下是用 XML 设置资源限制的示例

<resource-limit-settings>
   <resource-limit-setting match="myUser">
      <max-sessions>5</max-sessions>
      <max-queues>3</max-queues>
   </resource-limit-setting>
</resource-limit-settings>

address-setting 中的 match 不同,此 match 不使用任何通配符语法。它是将限制与用户进行简单的 1:1 映射。

max-sessions

匹配的用户可以在代理上创建的会话数。默认值为 -1,表示没有限制。

为什么是会话而不是连接

会话是 Core API 中的基本网络资源。

在 Core API 中,连接会话之间没有概念上的区别,例如,在 JMS/Jakarta Messaging 中。当应用程序使用 Core JMS 实现来创建 JMS Connection 时,实际在后台创建的是 Core 会话。此会话用于验证客户端应用程序的凭据和 JMS 客户端 ID(如果可用)。当应用程序创建 JMS Session 时,会创建另一个 Core 会话。

其他支持的协议(如 STOMP、AMQP、MQTT)也是如此。当客户端创建与代理的网络连接时,代理会通过创建内部服务器端会话进行响应。

可以按用户限制这些会话的数量。

需要明确的是,代理确实会跟踪基本的 TCP 连接,这些连接也可以限制(即通过 connectionsAllowed 接收器 URL 参数),但这些连接不携带凭据,因此无法按用户限制。

max-queues

匹配的用户可以创建的队列数。默认值为 -1,表示没有限制。