5.3. 管理消息Destination的权限

在 AMQ 的APUSIC_MQ_HOME/config/jms.xml 配置文件中,你可以对队列和主题设定访问权限,可以详细规定 AMQ 中的用户和组,可以对队列和主题进行何种操作。

对于队列,可以设定发送(send)、接收(receive)和浏览(browse)权限;对于主题,可以设定发布(publish)、订阅(subscribe)、持久订阅(subscribe-durable)和取消持久订阅(unsubscribe)权限。

客户端用QueueConnectionFactory 的createQueueConnection(java.lang.String userName,java.lang.String password)方法创建队列连接时输入用户身份,或者用createTopicConnection(java.lang.String userName, java.lang.String password)方法创建主题连接时输入用户身份。

下面的例子授权用户larry 可以对队列testQueue 进行接收和浏览:

首先创建testQueue队列,如果 AMQ 服务器中不存在testQueue队列,则通过管理工具创建,方法同上。

建立安全角色(security-role)rbt,将该角色映射到用户larry,使larry 拥有该角色包含的所有权限。如果 Apuisc MQ 服务器中不存在larry用户,在管理工具中“用户管理”-->“用户/组” 中创建larry用户。然后可参考apusic.jar中jms.dtd的定义,在jms.xml中加入如下片段:

<security-role>
    <role-name>rbt</role-name>
    <principal>larry</principal>
</security-role>

设置安全角色rbt的权限:

<destination-permission>
    <role-name>rbt</role-name>
    <destination-method>
        <queue-name>testQueue</queue-name>
        <method-name>receive</method-name>
        <method-name>browse</method-name>
    </destination-method>
</destination-permission>