aws fifo队列无法接收messageGroupID

时间:2017-03-18 18:06:53

标签: amazon-web-services fifo

我希望将从rets fifo sqs中检索后的消息与路由到正确的处理器区分开来。我计划使用我在发送请求时设置的 MessageGroupId 。 我正在使用Java sdk。 sendMessageRequest.setMessageGroupId(messageGroupId);

Documentation表示可以将其作为AttributeName

的请求参数进行检索

MessageGroupId - 返回调用SendMessage操作的发件人提供的值。具有相同MessageGroupId的消息将按顺序返回。 但是,我找不到正确的方法/方法。没有属性 MessageGroupId 现在且大小为0.

List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages();

for (Message message : messages) 
{  
System.out.println("    Size getAttributes:          " +   message.getAttributes() .size());
}

只有我明确设置了任何属性,然后才能进行转换(如 和MESSAGEPRIORITY),但是如何接收MessageGroupId这样的属性值?

非常感谢帮助。

1 个答案:

答案 0 :(得分:2)

getAttributes()能够向您显示之前,您必须告诉SQS您希望它提供哪些属性。

List<Message> messages = sqs.receiveMessage(receiveMessageRequest.withAttributeNames("All")).getMessages();

请注意,SQS消息有两种不同的属性。 属性是系统生成的(如MessageGroupId),而消息属性是用户生成的,当消息发送但外部传输时包含自定义键/值对消息体本身。