MQ权限管理
单击左侧导航树上的 “ 授权管理 > 权限管理 ” ,右侧区域显示 “权限管理” 界面,“权限管理”显示当前集群中声名的队列或主题对于“MQ用户组”的执行(可读、可写、管理)权限,即如果该“MQ用户组”在此队列或主题上声明的是可读、可写、管理权限,则与该“MQ用户组”关联的“MQ用户”对此队列或主题具有执行(读、写、管理)权限,同时在“权限管理”界面可进行权限的添加、修改、删除操作。例如,我们要对队列名称为“test-queue”的队列做权限控制使用户名为“wenyb”的“MQ用户”拥有读、写、管理权限,只需对该用户关联的“MQ用户组”添加读、写、管理权限即可。即对用户组名称为“admin”的用户组添加读、写、管理权限。权限添加完成后,“admin”拥有了读、写、管理权限,“wenyb”是“admin”用户组下的用户,因此“wenyb”也就拥有了admin所拥有的权限,同时会在MQ部署目录的conf目录下的auth.xml文件中保存权限信息。
auth.xml文件
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<root>
<anonymous allowed="false" username="anonymous" group="anonymous"/>
<users>
<user username="wenyb" password="000000" groups="admin"/>
</users>
<authorizations>
<queueAuthz queue="test-queue" readRoles="admin"
writeRoles="admin"
adminRoles="admin"/>
<topicAuthz topic="PMQ.Advisory.*" readRoles="admin"
writeRoles="admin"
adminRoles="admin"/>
</authorizations>
</root>
说明: 用户名为“wenyb”所在的用户组为“admin”,“admin”具有读、写、管理权限。 读权限:获取消息 写权限:发送消息 管理权限:创建、删除队列
目标地址声明支持通配符,以轻松支持组合名称层次结构。
通配符:
"." 用于作为路径上名字间的分隔符。
"*" 用于匹配路径上的任何名字。
">" 用于递归地匹配任何以这个名字开始的destination。
通配符定义目标地址名称示例:
PMQ.Advisory.*
可以定义目标地址名称为“PMQ.Advisory.XXX”的队列或主题,例如:PMQ.Advisory.TempQueue,PMQ.Advisory.TempTopic,PMQ.Advisory.Test,.....。
>
可以定义任何目标地址名称的队列或主题。
用户名为“wenyb”的MQ用户发送消息给队列“test-queue”客户端示例代码如下:
private String brokerURL= "tcp://192.168.1.194:61616";
@Test
public void testMQProducerQueue() throws Exception{
//1、创建工厂连接对象,需要制定ip和端口号
ConnectionFactory connectionFactory = new PMQConnectionFactory("wenyb",
"000000",brokerURL);
//2、使用连接工厂创建一个连接对象
Connection connection = connectionFactory.createConnection();
//3、开启连接
connection.start();
//4、使用连接对象创建会话(session)对象
Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
//5、使用会话对象创建目标对象,包含queue和topic(一对一和一对多)
Queue queue = session.createQueue("test-queue");
//6、使用会话对象创建生产者对象
MessageProducer producer = session.createProducer(queue);
producer.setTimeToLive(10000000);
producer.setDeliveryMode(1);
//7、使用会话对象创建一个消息对象
TextMessage textMessage = session.createTextMessage("hello!test-queue");
textMessage.setJMSExpiration(10000000);
textMessage.setJMSDeliveryMode(1);
System.out.println("我是队列生产者!");
//8、发送消息
producer.send(textMessage);
System.in.read();
//9、关闭资源
producer.close();
session.close();
connection.close();
}
添加权限
点击权限列表左上角的“添加权限”按钮,弹出添加权限表单,填写目标地址声明、选择用户组、选择执行权限、选择类型后点击“保存”按钮,提示操作成功后,添加权限成功。
表单参数说明 名称:声明的队列或主题的名称或目标地址名称,支持字母、数字、下划线及其组合,必填项。 用户组:通过下拉列表选取,必填项。 权限:队列或主题的操作权限,通过下拉列表选取,必填项。 类型:声名的目标地址类型,通过下拉列表选取,必填项。
编辑权限
点击权限列表中操作列中的“编辑”按钮,弹出编辑权限表单,修改目标声明(队列或主题)的权限信息后点击“保存”按钮,提示操作成功后,可修改此目标声明(队列或主题)的用户组,以及用户组的操作权限。
删除权限
点击权限列表中操作列中的“删除”按钮,弹出删除确认提示框,点击“确定”,提示操作成功后,可删除此目标地址声明以及用户组权限。
权限关闭
权限校验默认时开启状态,可以通过修改配置文件pmq.xml关闭权限,具体操作如下图所示: