Active Mq:如何阻止活动mq创建不存在的队列

时间:2017-04-27 17:25:59

标签: activemq

如何阻止活动mq创建不存在的队列? 我正在使用Active mq来存储消息,但是如果itbdoewnt存在,则活动Mq会创建一个队列。我不希望它创建一个队列,如果它不存在

1 个答案:

答案 0 :(得分:2)

您需要通过设置authorizationPlugin限制目标创建:

只有具有管理员角色的用户才能发送和阅读邮件并创建目的地

只有具有制作者角色的用户才能发送消息

只有具有消费者角色的用户才能阅读消息

添加到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

创建连接时,您必须传递用户&amp; pwd:

javax.jms.ConnectionFactory.createConnection(String userName, String password);