0

私は、AmazonSQS を利用する関数を Java から C# に変換する任務を負っています。私が与えられた関数では、これに似た行が2回表示されます

// x is a Message that is passed in as a parameter

Amazon.SQS.Model.Attribute sentTimestampx = x.Attribute.SingleOrDefault(a => a.Name == "SentTimestamp");

この行が具体的に何をしているのかはわかりませんが、SQS メッセージで「SentTimestamp」というラベル/属性を検索し、この値を sentTimestampx に保存していると思います。

Java で同等の関数を見つけようとしましたが、これまでのところ見つけることができませんでした。Java では、AmazonSQS メッセージに getAttributes() という関数がありますが、これはどう対処すればよいか分からない Map を返します。

c# の行が実際に行っていることと、Java の getAttributes() メソッドによって返された Map を使用して機能をシミュレートする方法について、説明をお願いできますか?

4

1 に答える 1

0

次と同等である必要があります。

Amazon.SQS.Model.Attribute sentTimestampx = null;

for (Amazon.SQS.Model.Attribute a : x.getAttributes())
{
    if (a.Name == "SentTimestamp")
    {
        if (sentTimestampx == null)
        {
            sentTimestampx = a;
        }
        else
        {
            throw new Exception("Boooooh! there is more than one matching elements!");
        }
    }
}

元の意図が実際に例外をスローすることでない限り、複数の一致する要素のチェックを削除し、見つかったときにループを中断するのが適切な近似だと思います。

于 2013-06-06T17:53:20.753 に答える