ActiveMq不会自动创建队列

时间:2012-11-27 11:22:40

标签: java jms activemq

我创建了一个这样的目的地:

 Destination destination = session.createQueue("queue_name");

在这种情况下,如果名为“queue_name”的队列不存在,则会创建它。

我想为队列建立一个目的地,如果它不存在,我不想创建它

有没有办法连接到队列只有它存在?

3 个答案:

答案 0 :(得分:1)

您必须使用ActiveMQ中的安全功能来限制允许创建目标的用户。然后,您可以在ActiveMQ配置中配置一组始终创建的目标。请参阅有关该主题的page以及有关配置安全性的page

答案 1 :(得分:1)

我认为您应该能够从连接中使用DestinationSource获取可用队列的列表。您可以查看队列是否存在。

Havnt尝试过,但认为它看起来像这样:

        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
        ActiveMQConnection connection = (ActiveMQConnection)connectionFactory.createConnection();
        DestinationSource ds = connection.getDestinationSource();
        Set<ActiveMQQueue> queues = ds.getQueues();

答案 2 :(得分:0)

您可以通过客户端的安全配置(消费者/生产者)来完成。

或者,您可以通过获取可用队列列表以及仅在列表中进行连接来以编程方式执行此操作。 ActiveMQ为此提供了一个类,但它不是JMS的一部分(因此您将被限制为ActiveMQ特定的实现)。

http://activemq.apache.org/maven/5.5.0/activemq-core/apidocs/org/apache/activemq/advisory/DestinationSource.html