次のような宛先を作成します。
Destination destination = session.createQueue("queue_name");
この場合、「queue_name」という名前のキューが存在しない場合は作成されます。
キューに宛先を形成したいのですが、存在しない場合は、作成したくありません。
キューが存在する場合にのみキューに接続する方法はありますか?
宛先を作成できるユーザーを制限するには、ActiveMQ のセキュリティ機能を使用する必要があります。次に、常に作成される ActiveMQ 構成で一連の宛先を構成できます。件名についてはこのページを参照し、セキュリティの構成 についてはこのページも参照してください。
接続から DestinationSource を使用して、使用可能なキューのリストを取得できるはずです。キューが存在するかどうかを確認できます。
試したことはありませんが、次のようになると思います。
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
ActiveMQConnection connection = (ActiveMQConnection)connectionFactory.createConnection();
DestinationSource ds = connection.getDestinationSource();
Set<ActiveMQQueue> queues = ds.getQueues();
クライアント (コンシューマー/プロデューサー) のセキュリティ構成を介して行うことができます。
または、使用可能なキューのリストを取得し、リストにある場合にのみ接続することで、プログラムで実行することもできます。ActiveMQ はこのためのクラスを提供しますが、JMS の一部ではありません (したがって、ActiveMQ 固有の実装に制限されます)。