0

我的任务是将利用 AmazonSQS 的函数从 Java 转换为 C#。在函数中,我得到了与此类似的行出现两次

// 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 回答