我创建了一个这样的目的地:
Destination destination = session.createQueue("queue_name");
在这种情况下,如果名为“queue_name”的队列不存在,它将被创建。
我想形成一个队列的目的地,如果它不存在,我不想创建它。
有没有办法仅在队列存在时才连接到队列?
我认为您应该能够使用 DestinationSource 从您的连接中获取可用队列的列表。您可以查看队列是否存在。
Havnt 尝试过,但认为它看起来像这样:
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
ActiveMQConnection connection = (ActiveMQConnection)connectionFactory.createConnection();
DestinationSource ds = connection.getDestinationSource();
Set<ActiveMQQueue> queues = ds.getQueues();
您可以通过客户端(消费者/生产者)的安全配置来做到这一点。
或者,您可以通过获取可用队列列表并仅在它在列表中时进行连接,以编程方式进行操作。ActiveMQ 为此提供了一个类,但它不是 JMS 的一部分(因此您将受限于 ActiveMQ 特定的实现)。