Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从SQS消息中获取“ApproxiateReceiveCount”_Java_Amazon Web Services_Amazon Sqs - Fatal编程技术网

Java 如何从SQS消息中获取“ApproxiateReceiveCount”

Java 如何从SQS消息中获取“ApproxiateReceiveCount”,java,amazon-web-services,amazon-sqs,Java,Amazon Web Services,Amazon Sqs,我正在使用AmazonSQS。我的目标是使用JavaSDK(v2.10.4,Java11)读取ApproximateReceiveCount属性 我尝试了以下代码,但message.attributes()不包含所需的键: String getApproxiateReceiveCount(){ var receiveMessageRequest=receiveMessageRequest.builder() .queueUrl(“https://sqs.eu-west-1.amazonaws.c

我正在使用AmazonSQS。我的目标是使用JavaSDK(v2.10.4,Java11)读取
ApproximateReceiveCount
属性

我尝试了以下代码,但
message.attributes()
不包含所需的键:

String getApproxiateReceiveCount(){
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响应=sqsClient.receiveMessage(receiveMessageRequest);
var message=response.messages().get(0);
return message.attributes().get(MessageSystemAttributeName.approxist\u RECEIVE\u COUNT);
}
如何开始接收
messagesystemtributename.APPROXIMATE\u RECEIVE\u COUNT
键的条目,在此映射中?

根据您链接的
ReceiveMessage
,有一个名为
AttributeName.N
的参数,描述为

需要随每条消息一起返回的属性列表。这些属性包括:

  • [……]
  • ApproximateReceiveCount–返回从队列接收到消息但未被删除的次数
因此,您需要在请求中请求属性,以使其在响应中可用。要做到这一点,请使用如下方法:

String getApproxiateReceiveCount(){
var receiveMessageRequest=receiveMessageRequest.builder()
.queueUrl(“https://sqs.eu-west-1.amazonaws.com/012345678910/my-example-queue")
.AttributeNamesWithString(MessageSystemAttributeName.Approxist\u RECEIVE\u COUNT.toString())
.build();
var sqsClient=sqsClient.builder().endpointOverride(URI.create()http://localhost:4576))build();
var响应=sqsClient.receiveMessage(receiveMessageRequest);
var message=response.messages().get(0);
return message.attributes().get(MessageSystemAttributeName.approxist\u RECEIVE\u COUNT);
}
请注意,有两个名称类似的方法,您不能使用:

  • .attributeNames()
    -参数enum未列出所需的键
  • .messageAttributeNames()
    -对应于随消息正文发送的属性