【发布时间】:2017-04-28 15:33:39
【问题描述】:
如何阻止活动 mq 创建不存在的队列? 我正在使用 Active mq 来存储消息,但如果它不存在,则 Active Mq 会创建一个队列。如果它不存在,我不希望它创建一个队列
【问题讨论】:
-
需要设置授权插件activemq.apache.org/…
标签: activemq
如何阻止活动 mq 创建不存在的队列? 我正在使用 Active mq 来存储消息,但如果它不存在,则 Active Mq 会创建一个队列。如果它不存在,我不希望它创建一个队列
【问题讨论】:
标签: activemq
你需要通过设置一个 authorizationPlugin 来限制目的地的创建:
只有具有 admins 角色的用户才能发送和阅读消息并创建目的地
只有具有生产者角色的用户才能发送消息
只有具有消费者角色的用户才能阅读消息
添加到activemq.xml:
<plugins>
<jaasAuthenticationPlugin configuration="activemq"/>
<authorizationPlugin>
<map>
<authorizationMap>
<authorizationEntries>
<authorizationEntry queue="test" read="consumers" write="producers" admin="admins" />
<authorizationEntry topic="ActiveMQ.Advisory.>" read="all" write="all" admin="all"/>
<authorizationEntry queue="ActiveMQ.>.>" read="admins" write="admins" admin="admins"/>
</authorizationEntries>
<tempDestinationAuthorizationEntry>
<tempDestinationAuthorizationEntry read="admins" write="admins" admin="admins"/>
</tempDestinationAuthorizationEntry>
</authorizationMap>
</map>
</authorizationPlugin>
</plugins>
添加到 login.config :
activemq {
org.apache.activemq.jaas.PropertiesLoginModule required
org.apache.activemq.jaas.properties.user="users.properties"
org.apache.activemq.jaas.properties.group="groups.properties"
reload=true;
};
添加到 users.properties :
q_consumers=q_consumers_pwd
q_producers=q_producers_pwd
admin=admin
添加到 groups.properties :
admins=admin
consumers=q_consumers
producers=q_producers
all=q_consumers,q_producers,admin
当您创建连接时,您必须传递用户和密码:
javax.jms.ConnectionFactory.createConnection(String userName, String password);
【讨论】: