如何阻止活动mq创建不存在的队列? 我正在使用Active mq来存储消息,但是如果itbdoewnt存在,则活动Mq会创建一个队列。我不希望它创建一个队列,如果它不存在
答案 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);