2014-05-22 4 views
0

SQS에서 메시지를 삭제하려고했지만 성공하지 못했습니다. 방금 url/queue에서 메시지를 가져 왔지만 QueueDoesNotExistException이 발생합니다. 아무도 내가 뭘 잘못하고 있다고 말할 수 있습니까? 여기에 내가 쓴 기능은 다음과 같습니다 SQS의 AWS java/android SDK : QueueDoesNotExistException

public ArrayList<String> receiveSqsMessages(String url) { 
    AmazonSQSClient client = getSQSClient(Regions.SA_EAST_1); 

    ReceiveMessageRequest request = new ReceiveMessageRequest(url); 
    request.setMaxNumberOfMessages(10); 
    request.setWaitTimeSeconds(5); 

    ArrayList<Message> messageList = null; 

    try { 
     ReceiveMessageResult result = client.receiveMessage(request); 
     messageList = new ArrayList<Message>(result.getMessages()); 
    } catch (AmazonClientException ac) { 
     return null; 
    } 

    ArrayList<String> messages = new ArrayList<String>(); 

    for (Message m : messageList) { 
     String current_message = m.getBody(); 

     if(md5(current_message).equals(m.getMD5OfBody())) { 
      messages.add(current_message); 
      String ticket = m.getReceiptHandle(); 

      DeleteMessageRequest delete = new DeleteMessageRequest(); 
      delete.setReceiptHandle(ticket); 
      client.deleteMessage(delete); 
     } 
    } 
    return messages; 
} 

private AmazonSQSClient getSQSClient(Regions regions) { 
    AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY_ID, SECRET_KEY); 

    Region region = Region.getRegion(regions); 

    AmazonSQSClient client = new AmazonSQSClient(credentials); 
    client.setRegion(region); 

    return client; 
} 

나는 메시지가 줄을 Log.d를 사용하여 검색되는 확인했다.

답변

0

queueUrlDeleteMessageRequest으로 설정하지 않았습니다. DeleteMessageRequest 개체에 setQueueUrl(String queueUrl)으로 전화해야합니다. DeleteMessageRequest Javadoc에서 자세한 내용을 볼 수 있습니다.