title: AWS.SimpleQueueService.NonExistentQueue Exception thrown when Accessing Existing SQS queue
body: <p>I am relatively new to AWS SQS services. I have written some code to wrap the Amazon SQS api. </p>
  
  <p>I am able perform basic functionality with created queues, but despite that (in fact I have been using this code for ever with no problem, and I am creating JUnit tests as a formality), I am failing my JUnit test because of an error that makes little sense to me.</p>
  
  <p>I have created a queue names SerenaQForTest using the AWS Management console. When I look at the AWS Console I can see that the queue I have created is listed. I have set the permissions on the queue to open for everyone. I am coding in Java.</p>
  
  <p>When I try to interact with the queue, I get an AmazonServiceException with error code AWS.SimpleQueueService.NonExistentQueueerror. </p>
  
  <p>Here is my code.</p>
  
  <p>In the Junit Class:</p>
  
  <pre><code>/**
   * Prefix for queues used to run junit tests.
   */
  private static final String TESTQ = "SerenaForTest";
  
  /**
   * Ensures that the queue exists.
   */
  @Test
  public void testExists() {
      System.out.println("JUnit Test EXISTS.");
      CloudSQS cloudsqs = new CloudSQS();
      // this queue does exist and i can see it through the aws management console in sqs
      assertTrue(cloudsqs.exists(TESTQ));
      // this queue does not exist.
      assertTrue(cloudsqs.exists("thisQDoesNotExist") == false);
  }
  </code></pre>
  
  <p>and exists() is defined as follows:</p>
  
  <pre><code>/**
   * Determines if the queue exists or not.
   * 
   * @param qName
   *            , name of the queue to determine existence of.
   * @return boolean, true if the queue exists; false otherwise.
   */
  public boolean exists(final String qName) {
      boolean retVal = false;
      try {
          // create a request for the url of qName
          GetQueueUrlRequest getQueueUrlRequest = new GetQueueUrlRequest(qName);
  
          String addy = sqs.getQueueUrl(getQueueUrlRequest).getQueueUrl();
          System.out.println(qName + " url : " + addy);
          if (addy != null) {
              // get all queues on sqs
              ListQueuesResult queues = sqs.listQueues();
              // for each url,
              for (String url : queues.getQueueUrls()) {
                  // System.out.println("Comparing " + addy + " and " + url);
                  if (url.equalsIgnoreCase(addy)) {
                      System.out.println("Queue exists.");
                      retVal = true;
                      break;
                  }
              }
          } else {
              System.out.println("Queue " + qName + " does not exist.");
          }
      } catch (AmazonServiceException ase) {
          System.err.println("ERR: AmazonServiceException. Error code: " + ase.getErrorCode());
      } catch (AmazonClientException ace) {
          System.err.println("ERR: AmazonClientException.");
          ace.printStackTrace();
      } catch (Exception e) {
          System.err.println("ERR: Regular Old Error.");
          e.printStackTrace();
      }
      return retVal;
  }
  </code></pre>
  
  <p>Console Output:</p>
  
  <hr>
  
  <p>JUnit Test EXISTS.
  SerenaForTest url : <a href="https://sqs.us-west-2.amazonaws.com/079023477467/SerenaForTest" rel="noreferrer">https://sqs.us-west-2.amazonaws.com/079023477467/SerenaForTest</a>
  Queue exists.
  ERR: AmazonServiceException. Error code: AWS.SimpleQueueService.NonExistentQueue</p>
  
  <p>Here is the stacktrace:</p>
  
  <p>AmazonServiceException: Status Code: 400, AWS Service: AmazonSQS, AWS Request ID: a2809a40-223f-5c4d-b369-d0c3301a8e4e, AWS Error Code: AWS.SimpleQueueService.NonExistentQueue, AWS Error Message: The specified queue does not exist for this wsdl version.
      at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:644)
      at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:338)
      at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:190)
      at com.amazonaws.services.sqs.AmazonSQSClient.invoke(AmazonSQSClient.java:875)
      at com.amazonaws.services.sqs.AmazonSQSClient.getQueueUrl(AmazonSQSClient.java:364)
      at com.tutelatechnologies.SQLiteConverter.cloud.CloudSQS.exists(CloudSQS.java:301)
      at com.tutelatechnologies.SQLiteConverter.cloud.CloudSQSTest.testExists(CloudSQSTest.java:169)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
      at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
      at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
      at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)</p>
  
  <p>From that you can see that the function is able to grab the queue URL and that a match is found. But it still throws an exception. </p>
  
  <p>Any one have any ideas why this is happening? I call exists() every time I need to throw something on or take something off of the queue so its actually failing all of my JUnit tests but for the same reasons. </p>
  
  <p>Thanks in advance!!!</p>