Currently there's no way to differentiate between “queue does not exist”
and other errors due to the way the broker handles the underlying exception
when retrieving the attribute's value. However, you can use the createQueue
method of ClientSession with some exception handling before you invoke the
management operation to ensure the queue exists, e.g.:

      try {
         session.createQueue(new QueueConfiguration(queueName));
      } catch (ActiveMQQueueExistsException e) {
         // ignore
      }

The createQueue and createTopic methods on the JMS Session object just
instantiate a local object of the respective type. This is noted in the
JavaDoc [1]:

  > Note that this method simply creates an object that encapsulates the
name of a queue. It does not create the physical queue in the JMS provider.


Justin

[1]
https://docs.oracle.com/javaee/7/api/javax/jms/Session.html#createQueue-java.lang.String-

On Fri, Nov 4, 2022 at 5:17 PM John Lilley
<john.lil...@redpointglobal.com.invalid> wrote:

> I’ve also tried ensuring that a queue exists, by creating the queues we
> will use.
>
> However, it looks like the JMS call to Session.createQueue() doesn’t
> really create the queue.  Are queues created lazily?  Is there a way to
> force queue creation?
>
> Thanks
>
> john
>
>
>
>
> [image: rg] <https://www.redpointglobal.com/>
>
> John Lilley
>
> Data Management Chief Architect, Redpoint Global Inc.
>
> 888 Worcester Street, Suite 200 Wellesley, MA 02482
>
> *M: *+1 7209385761 <+1%207209385761> | john.lil...@redpointglobal.com
>
> *From:* John Lilley <john.lil...@redpointglobal.com.INVALID>
> *Sent:* Friday, November 4, 2022 3:10 PM
> *To:* users@activemq.apache.org
> *Subject:* Artemis management API: getting message counts
>
>
>
> **** [Caution] This email is from an external source. Please use caution
> responding, opening attachments or clicking embedded links. ****
>
>
>
> Greetings,
>
>
>
> To get the message count of a queue using the Artemis management API, we
> are doing
>
>
>
> ClientMessage request = *clientSession*.createMessage(*false*);
> ManagementHelper.*putAttribute*(request, ResourceNames.*QUEUE *+
> queueName, “MessageCount”);
> ClientMessage reply = client.request(request);
>
> *if *(ManagementHelper.*hasOperationSucceeded*(reply)) { … }
>
> This works, but fails if the queue doesn’t exist.  How can I tell the
> difference between “queue does not exist” and other errors?  Do I need to
> make a separate call to determine existence?
>
>
>
> Thanks
>
> John
>
>
>
>
>
> [image: rg]
> <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,p_NHR3a86dR1b6KlO21SbnJU-TNYVbsUl7-SSqKmaTT4lFJEiA1qulR_3Qi6v5uvBhPC0wMOd0jueDbLvHHWVKG70a9fU1BwXahcuC7C&typo=1>
>
> *John Lilley *
>
> *Data Management Chief Architect, Redpoint Global Inc. *
>
> 888 Worcester Street, Suite 200 Wellesley, MA 02482
>
> *M: *+1 7209385761 <+1%207209385761> | john.lil...@redpointglobal.com
>
>
> PLEASE NOTE: This e-mail from Redpoint Global Inc. (“Redpoint”) is
> confidential and is intended solely for the use of the individual(s) to
> whom it is addressed. If you believe you received this e-mail in error,
> please notify the sender immediately, delete the e-mail from your computer
> and do not copy, print or disclose it to anyone else. If you properly
> received this e-mail as a customer, partner or vendor of Redpoint, you
> should maintain its contents in confidence subject to the terms and
> conditions of your agreement(s) with Redpoint.
>
> PLEASE NOTE: This e-mail from Redpoint Global Inc. (“Redpoint”) is
> confidential and is intended solely for the use of the individual(s) to
> whom it is addressed. If you believe you received this e-mail in error,
> please notify the sender immediately, delete the e-mail from your computer
> and do not copy, print or disclose it to anyone else. If you properly
> received this e-mail as a customer, partner or vendor of Redpoint, you
> should maintain its contents in confidence subject to the terms and
> conditions of your agreement(s) with Redpoint.
>

Reply via email to