有時,除了與授權和身份驗證相關的正常安全設定之外,針對特定使用者可以執行的操作設定特定限制會很有幫助。例如,限制使用者可以建立的連線數量或使用者可以建立的佇列數量。本章將說明如何配置這些限制。

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 acceptor URL 參數),但這些連線不攜帶憑證,因此無法針對每個使用者進行限制。

max-queues

匹配的使用者可以建立的佇列數量。預設值為 -1,表示沒有限制。