2016-12-23 21 views
2

コードでは、sqsキューからメッセージを削除し、を取得します。AWSソースコードにエラーがありますか?

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メッセージの削除については、公式[documentation](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html)を参照してください。 – MaxZoom

答えて

1

プログラミングの観点からは、toString()が正しく書き込まれています。この関数の機能について考えてみましょう:

このオブジェクトの文字列表現です。

DeleteMessageResultクラスにはプロパティがないため、何も返されません。同じことがhashCode()に当てはまります。 DeleteMessageResultの2つのオブジェクトは常に同一なので、毎回同じハッシュを持ちます。

言われていること

、私はDeleteMessageResultAPI referenceにショーなどのユニークなRequestIdResposeMetadataを含めるべきであると思います:

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

だから、はい、このクラスは(おそらく、必要があります)SQS完全にバックにパッチを適用することができAPI。

関連する問題