Jak*_*kub 5 java amazon-sqs amazon-web-services
我正在使用亚马逊 SQS。我的目标是使用 Java SDK(v2.10.4,Java 11)从API 操作读取ApproximateReceiveCount
属性。ReceiveMessage
我尝试了以下代码,但message.attributes()
不包含所需的密钥:
String getApproximateReceiveCount() {
var receiveMessageRequest = ReceiveMessageRequest.builder()
.queueUrl("https://sqs.eu-west-1.amazonaws.com/012345678910/my-example-queue")
.build();
var sqsClient = SqsClient.builder().endpointOverride(URI.create("http://localhost:4576")).build();
var response = sqsClient.receiveMessage(receiveMessageRequest);
var message = response.messages().get(0);
return message.attributes().get(MessageSystemAttributeName.APPROXIMATE_RECEIVE_COUNT);
}
Run Code Online (Sandbox Code Playgroud)
在此地图中如何接收密钥条目MessageSystemAttributeName.APPROXIMATE_RECEIVE_COUNT
?
根据您链接到的文档页面ReceiveMessage
,有一个名为AttributeName.N
描述为的参数
\n\n\n需要与每条消息一起返回的属性列表。这些属性包括:
\n\n\n
\n- [...]
\n- ApproximateReceiveCount \xe2\x80\x93 返回已从队列接收但未删除消息的次数。
\n
因此,您需要在请求中请求该属性,以便它在响应中可用。为此,请使用ReceiveMessageRequestBuilder.attributeNamesWithStrings()
如下方法:
String getApproximateReceiveCount() {\n var receiveMessageRequest = ReceiveMessageRequest.builder()\n .queueUrl("https://sqs.eu-west-1.amazonaws.com/012345678910/my-example-queue")\n .attributeNamesWithStrings(MessageSystemAttributeName.APPROXIMATE_RECEIVE_COUNT.toString())\n .build();\n var sqsClient = SqsClient.builder().endpointOverride(URI.create("http://localhost:4576")).build();\n var response = sqsClient.receiveMessage(receiveMessageRequest);\n var message = response.messages().get(0);\n return message.attributes().get(MessageSystemAttributeName.APPROXIMATE_RECEIVE_COUNT);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n请注意,有两个名称相似的方法,您不能使用它们:
\n\n.attributeNames()
- 参数枚举未列出所需的键,.messageAttributeNames()
- 对应于与消息正文一起发送的属性。 归档时间: |
|
查看次数: |
3694 次 |
最近记录: |