2016-12-23 43 views
2

在我們的代碼中,我們從sqs隊列中刪除消息並獲得deletResponseAWS源代碼中的錯誤?

String deleteResponse = sqsClient.deleteMessage(simBridge2ESBUrl, message.getReceiptHandle()).toString(); 

的消息在此調用後刪除,但deleteResponse總是{}。所以我們檢查了源代碼,發現DeleteMessageResult::toString函數只返回{}

以下是AWS源代碼。 toString()hashCode()函數似乎很奇怪。源代碼中有錯誤還是我做錯了?謝謝。

/* 
* Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights 
* Reserved. 
* 
* Licensed under the Apache License, Version 2.0 (the "License"). 
* You may not use this file except in compliance with the License. 
* A copy of the License is located at 
* 
* http://aws.amazon.com/apache2.0 
* 
* or in the "license" file accompanying this file. This file is distributed 
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
* express or implied. See the License for the specific language governing 
* permissions and limitations under the License. 
*/ 

package com.amazonaws.services.sqs.model; 

import java.io.Serializable; 

/** 
* 
*/ 
public class DeleteMessageResult implements Serializable, Cloneable { 

    /** 
    * Returns a string representation of this object; useful for testing and 
    * debugging. 
    * 
    * @return A string representation of this object. 
    * 
    * @see java.lang.Object#toString() 
    */ 
    @Override 
    public String toString() { 
     StringBuilder sb = new StringBuilder(); 
     sb.append("{"); 
     sb.append("}"); 
     return sb.toString(); 
    } 

    @Override 
    public boolean equals(Object obj) { 
     if (this == obj) 
      return true; 
     if (obj == null) 
      return false; 

     if (obj instanceof DeleteMessageResult == false) 
      return false; 
     DeleteMessageResult other = (DeleteMessageResult) obj; 
     return true; 
    } 

    @Override 
    public int hashCode() { 
     final int prime = 31; 
     int hashCode = 1; 

     return hashCode; 
    } 

    @Override 
    public DeleteMessageResult clone() { 
     try { 
      return (DeleteMessageResult) super.clone(); 
     } catch (CloneNotSupportedException e) { 
      throw new IllegalStateException(
        "Got a CloneNotSupportedException from Object.clone() " 
          + "even though we're Cloneable!", e); 
     } 
    } 
} 
+0

有關刪除SQS消息,請參見官方文檔(http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html)。 – MaxZoom

回答

1

從編程的角度來看toString()被寫入正確。想想這個功能的作用:

這個對象的字符串表示形式。

由於DeleteMessageResult類沒有屬性,所以沒有什麼可返回的。同樣適用於hashCode()DeleteMessageResult的兩個對象總是相同的,所以它們每次都有相同的散列。

話雖這麼說,我認爲DeleteMessageResult應該包含ResposeMetadata獨特RequestId爲秀API reference

<DeleteMessageResponse> 
    <ResponseMetadata> 
     <RequestId> 
      b5293cb5-d306-4a17-9048-b263635abe42 
     </RequestId> 
    </ResponseMetadata> 
</DeleteMessageResponse> 

所以,是的,這個類可以(或許應該)進行修補,以完全恢復的SQS API。