aws fifo 队列无法接收 messageGroupID

aws fifo queue cannot receive messageGroupID

我想在从 aws fifo sqs 检索后区分消息以路由到正确的处理器。我计划使用 MessageGroupId ,这是我在发送请求时设置的。 我正在使用 Java SDK。 sendMessageRequest.setMessageGroupId(messageGroupId);

Documentation表示可以作为AttributeName的请求参数获取

MessageGroupId - Returns 调用 SendMessage 操作的发件人提供的值。具有相同 MessageGroupId 的消息按顺序返回。 但是,我找不到正确的 way/method 来这样做。没有属性 MessageGroupId 存在且大小为 0。

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

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

只有当我显式设置任何属性时它才可检索(如 和 MESSAGEPRIORITY),但如何接收 MessageGroupId 等属性的值?

感谢帮助。

您必须告诉 SQS 您希望它为您提供哪些属性,然后 getAttributes() 才能向您显示它们。

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

请注意,SQS 消息具有两种不同的属性。 属性 是系统生成的(如 MessageGroupId),而 消息属性 是用户生成的,包括自定义 key/value 对当消息已发送但在消息正文本身外部传输时。