问题
How to stop active mq from creating queue which doesnt exist? I am using Active mq for storing message but active Mq creates a queue if itbdoewnt exist. I dont want it to create a queue if it doesnt exist
回答1:
you need to limit destinations creation by setting an authorizationPlugin :
only users with admins role can send and read messages and create destinations
only users with producers role can send messages
only users with consumers role can read messages
add to 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>
add to 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;
};
add to users.properties :
q_consumers=q_consumers_pwd
q_producers=q_producers_pwd
admin=admin
add to groups.properties :
admins=admin
consumers=q_consumers
producers=q_producers
all=q_consumers,q_producers,admin
when you create a Connection you have to pass user & pwd :
javax.jms.ConnectionFactory.createConnection(String userName, String password);
来源:https://stackoverflow.com/questions/43664311/active-mq-how-to-stop-active-mq-from-creating-queue-which-doesnt-exist