你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
QueueClient Class
- java.
lang. Object - com.
azure. storage. queue. QueueClient
- com.
public final class QueueClient
This class provides a client that contains all the operations for interacting with a queue in Azure Storage Queue. Operations allowed by the client are creating and deleting the queue, retrieving and updating metadata and access policies of the queue, and enqueuing, dequeuing, peeking, updating, and deleting messages.
Instantiating an Synchronous Queue Client
QueueClient client = new QueueClientBuilder()
.connectionString("connectionstring")
.endpoint("endpoint")
.buildClient();
View QueueClientBuilder for additional ways to construct the client.
Method Summary
Methods inherited from java.lang.Object
Method Details
clearMessages
public void clearMessages()
Deletes all messages in the queue.
Code Samples
Clear the messages
client.clearMessages();
System.out.println("Clearing messages completed.");
For more information, see the Azure Docs.
clearMessagesWithResponse
public Response
Deletes all messages in the queue.
Code Samples
Clear the messages
Response<Void> response = client.clearMessagesWithResponse(Duration.ofSeconds(1), new Context(key1, value1));
System.out.printf("Clearing messages completed with status code %d", response.getStatusCode());
For more information, see the Azure Docs.
Parameters:
Returns:
create
public void create()
Creates a new queue.
Code Samples
Create a queue
client.create();
System.out.println("Complete creating queue.");
For more information, see the Azure Docs.
createIfNotExists
public boolean createIfNotExists()
Creates a new queue if it does not exist.
Code Samples
Create a queue
boolean result = client.createIfNotExists();
System.out.println("Queue created: " + result);
For more information, see the Azure Docs.
Returns:
true
if queue is successfully created, false
if queue already exists.createIfNotExistsWithResponse
public Response
Creates a new queue if it does not exist.
Code Samples
Create a queue with metadata "queue:metadataMap"
Response<Boolean> response = client.createIfNotExistsWithResponse(Collections.singletonMap("queue", "metadataMap"),
Duration.ofSeconds(1), new Context(key1, value1));
if (response.getStatusCode() == 409) {
System.out.println("Already existed.");
} else {
System.out.printf("Create completed with status %d%n", response.getStatusCode());
}
For more information, see the Azure Docs.
Parameters:
Returns:
createWithResponse
public Response
Creates a new queue.
Code Samples
Create a queue with metadata "queue:metadataMap"
Response<Void> response = client.createWithResponse(Collections.singletonMap("queue", "metadataMap"),
Duration.ofSeconds(1), new Context(key1, value1));
System.out.println("Complete creating queue with status code: " + response.getStatusCode());
For more information, see the Azure Docs.
Parameters:
Returns:
delete
public void delete()
Permanently deletes the queue.
Code Samples
Delete a queue
client.delete();
System.out.println("Complete deleting the queue.");
For more information, see the Azure Docs.
deleteIfExists
public boolean deleteIfExists()
Permanently deletes the queue if exists.
Code Samples
Delete a queue
client.deleteIfExists();
System.out.println("Complete deleting the queue.");
For more information, see the Azure Docs.
Returns:
true
if queue is successfully deleted, false
if queue does not exist.deleteIfExistsWithResponse
public Response
Permanently deletes the queue if it exists.
Code Samples
Delete a queue
Response<Boolean> response = client.deleteIfExistsWithResponse(Duration.ofSeconds(1), new Context(key1, value1));
if (response.getStatusCode() == 404) {
System.out.println("Does not exist.");
} else {
System.out.printf("Delete completed with status %d%n", response.getStatusCode());
}
For more information, see the Azure Docs.
Parameters:
Returns:
deleteMessage
public void deleteMessage(String messageId, String popReceipt)
Deletes the specified message in the queue
Code Samples
Delete the first message
QueueMessageItem queueMessageItem = client.receiveMessage();
client.deleteMessage(queueMessageItem.getMessageId(), queueMessageItem.getPopReceipt());
System.out.println("Complete deleting the message.");
For more information, see the Azure Docs.
Parameters:
deleteMessageWithResponse
public Response
Deletes the specified message in the queue
Code Samples
Delete the first message
QueueMessageItem queueMessageItem = client.receiveMessage();
Response<Void> response = client.deleteMessageWithResponse(queueMessageItem.getMessageId(),
queueMessageItem.getPopReceipt(), Duration.ofSeconds(1), new Context(key1, value1));
System.out.println("Complete deleting the message with status code " + response.getStatusCode());
For more information, see the Azure Docs.
Parameters:
Returns:
deleteWithResponse
public Response
Permanently deletes the queue.
Code Samples
Delete a queue
Response<Void> response = client.deleteWithResponse(Duration.ofSeconds(1), new Context(key1, value1));
System.out.println("Complete deleting the queue with status code: " + response.getStatusCode());
For more information, see the Azure Docs.
Parameters:
Returns:
generateSas
public String generateSas(QueueServiceSasSignatureValues queueServiceSasSignatureValues)
Generates a service sas for the queue using the specified QueueServiceSasSignatureValues
Note : The client must be authenticated via StorageSharedKeyCredential
See QueueServiceSasSignatureValues for more information on how to construct a service SAS.
Code Samples
OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);
QueueSasPermission permission = new QueueSasPermission().setReadPermission(true);
QueueServiceSasSignatureValues values = new QueueServiceSasSignatureValues(expiryTime, permission)
.setStartTime(OffsetDateTime.now());
client.generateSas(values); // Client must be authenticated via StorageSharedKeyCredential
Parameters:
Returns:
String
representing the SAS query parameters.generateSas
public String generateSas(QueueServiceSasSignatureValues queueServiceSasSignatureValues, Context context)
Generates a service sas for the queue using the specified QueueServiceSasSignatureValues
Note : The client must be authenticated via StorageSharedKeyCredential
See QueueServiceSasSignatureValues for more information on how to construct a service SAS.
Code Samples
OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);
QueueSasPermission permission = new QueueSasPermission().setReadPermission(true);
QueueServiceSasSignatureValues values = new QueueServiceSasSignatureValues(expiryTime, permission)
.setStartTime(OffsetDateTime.now());
// Client must be authenticated via StorageSharedKeyCredential
client.generateSas(values, new Context("key", "value"));
Parameters:
Returns:
String
representing the SAS query parameters.generateSas
public String generateSas(QueueServiceSasSignatureValues queueServiceSasSignatureValues, Consumer
Generates a service sas for the queue using the specified QueueServiceSasSignatureValues
Note : The client must be authenticated via StorageSharedKeyCredential
See QueueServiceSasSignatureValues for more information on how to construct a service SAS.
Parameters:
Returns:
String
representing the SAS query parameters.getAccessPolicy
public PagedIterable
Retrieves stored access policies specified on the queue.
Code Samples
List the stored access policies
for (QueueSignedIdentifier permission : client.getAccessPolicy()) {
System.out.printf("Access policy %s allows these permissions: %s", permission.getId(),
permission.getAccessPolicy().getPermissions());
}
For more information, see the Azure Docs.
Returns:
getAccountName
public String getAccountName()
Get associated account name.
Returns:
getHttpPipeline
public HttpPipeline getHttpPipeline()
Gets the HttpPipeline powering this client.
Returns:
getMessageEncoding
public QueueMessageEncoding getMessageEncoding()
Gets the message encoding the client is using.
Returns:
getProperties
public QueueProperties getProperties()
Retrieves metadata and approximate message count of the queue.
Code Samples
Get the properties of the queue
QueueProperties properties = client.getProperties();
System.out.printf("Metadata: %s, Approximate message count: %d", properties.getMetadata(),
properties.getApproximateMessagesCount());
For more information, see the Azure Docs.
Returns:
getPropertiesWithResponse
public Response
Retrieves metadata and approximate message count of the queue.
Code Samples
Get the properties of the queue
QueueProperties properties = client.getPropertiesWithResponse(Duration.ofSeconds(1),
new Context(key1, value1)).getValue();
System.out.printf("Metadata: %s, Approximate message count: %d", properties.getMetadata(),
properties.getApproximateMessagesCount());
For more information, see the Azure Docs.
Parameters:
Returns:
getQueueName
public String getQueueName()
Get the queue name of the client.
Code Samples
String queueName = client.getQueueName();
System.out.println("The name of the queue is " + queueName);
Returns:
getQueueUrl
public String getQueueUrl()
Get the URL of the storage queue.
Returns:
getServiceVersion
public QueueServiceVersion getServiceVersion()
Gets the service version the client is using.
Returns:
peekMessage
public PeekedMessageItem peekMessage()
Peeks the first message in the queue. Peeked messages don't contain the necessary information needed to interact with the message nor will it hide messages from other operations on the queue.
Code Samples
Peek the first message
PeekedMessageItem peekedMessageItem = client.peekMessage();
System.out.println("Complete peeking the message: " + peekedMessageItem.getBody().toString());
For more information, see the Azure Docs.
Returns:
peekMessages
public PagedIterable
Peek messages from the front of the queue up to the maximum number of messages. Peeked messages don't contain the necessary information needed to interact with the message nor will it hide messages from other operations on the queue.
Code Samples
Peek up to the first five messages
client.peekMessages(5, Duration.ofSeconds(1), new Context(key1, value1)).forEach(
peekMessage -> System.out.printf("Peeked message %s has been received %d times",
peekMessage.getMessageId(), peekMessage.getDequeueCount())
);
For more information, see the Azure Docs.
Parameters:
Returns:
maxMessages
PeekedMessageItem from the queue. Each PeekedMessage
contains metadata about the message.receiveMessage
public QueueMessageItem receiveMessage()
Retrieves the first message in the queue and hides it from other operations for 30 seconds.
Code Samples
Receive a message
QueueMessageItem queueMessageItem = client.receiveMessage();
System.out.println("Complete receiving the message: " + queueMessageItem.getMessageId());
For more information, see the Azure Docs.
Returns:
receiveMessages
public PagedIterable
Retrieves up to the maximum number of messages from the queue and hides them from other operations for 30 seconds.
Code Samples
Receive up to 5 messages
for (QueueMessageItem message : client.receiveMessages(5)) {
System.out.printf("Received %s and it becomes visible at %s",
message.getMessageId(), message.getTimeNextVisible());
}
For more information, see the Azure Docs.
Parameters:
Returns:
maxMessages
QueueMessageItem from the queue.
Each ReceiveMessageItem contains getMessageId() and
getPopReceipt()
used to interact with the message and other metadata about the message.receiveMessages
public PagedIterable
Retrieves up to the maximum number of messages from the queue and hides them from other operations for the timeout period.
Code Samples
Receive up to 5 messages and give them a 60 second timeout period
for (QueueMessageItem message : client.receiveMessages(5, Duration.ofSeconds(60),
Duration.ofSeconds(1), new Context(key1, value1))) {
System.out.printf("Received %s and it becomes visible at %s",
message.getMessageId(), message.getTimeNextVisible());
}
For more information, see the Azure Docs.
Parameters:
Returns:
maxMessages
QueueMessageItem from the queue. Each DeqeuedMessage
contains getMessageId() and
getPopReceipt()
used to interact with the message and other metadata about the message.sendMessage
public SendMessageResult sendMessage(BinaryData message)
Sends a message that has a time-to-live of 7 days and is instantly visible.
Code Samples
Sends a message of "Hello, Azure"
SendMessageResult response = client.sendMessage(BinaryData.fromString("Hello msg"));
System.out.println("Complete enqueuing the message with message Id" + response.getMessageId());
For more information, see the Azure Docs.
Parameters:
Returns:
sendMessage
public SendMessageResult sendMessage(String messageText)
Sends a message that has a time-to-live of 7 days and is instantly visible.
Code Samples
Sends a message of "Hello, Azure"
SendMessageResult response = client.sendMessage("hello msg");
System.out.println("Complete enqueuing the message with message Id" + response.getMessageId());
For more information, see the Azure Docs.
Parameters:
Returns:
sendMessageWithResponse
public Response
Sends a message with a given time-to-live and a timeout period where the message is invisible in the queue.
Code Samples
Add a message of "Hello, Azure" that has a timeout of 5 seconds
SendMessageResult sentMessageItem = client.sendMessageWithResponse(BinaryData.fromString("Hello, Azure"),
Duration.ofSeconds(5), null, Duration.ofSeconds(1), new Context(key1, value1)).getValue();
System.out.printf("Message %s expires at %s", sentMessageItem.getMessageId(),
sentMessageItem.getExpirationTime());
Add a message of "Goodbye, Azure" that has a time to live of 5 seconds
SendMessageResult enqueuedMessage = client.sendMessageWithResponse(BinaryData.fromString("Goodbye, Azure"),
null, Duration.ofSeconds(5), Duration.ofSeconds(1), new Context(key1, value1)).getValue();
System.out.printf("Message %s expires at %s", enqueuedMessage.getMessageId(),
enqueuedMessage.getExpirationTime());
For more information, see the Azure Docs.
Parameters:
Duration.ofSeconds(-1)
is passed the message will not expire.
The time to live must be Duration.ofSeconds(-1)
or any positive number of seconds.
Returns:
sendMessageWithResponse
public Response
Sends a message with a given time-to-live and a timeout period where the message is invisible in the queue.
Code Samples
Add a message of "Hello, Azure" that has a timeout of 5 seconds
SendMessageResult sentMessageItem = client.sendMessageWithResponse("Hello, Azure",
Duration.ofSeconds(5), null, Duration.ofSeconds(1), new Context(key1, value1)).getValue();
System.out.printf("Message %s expires at %s", sentMessageItem.getMessageId(),
sentMessageItem.getExpirationTime());
Add a message of "Goodbye, Azure" that has a time to live of 5 seconds
SendMessageResult enqueuedMessage = client.sendMessageWithResponse("Goodbye, Azure",
null, Duration.ofSeconds(5), Duration.ofSeconds(1), new Context(key1, value1)).getValue();
System.out.printf("Message %s expires at %s", enqueuedMessage.getMessageId(),
enqueuedMessage.getExpirationTime());
For more information, see the Azure Docs.
Parameters:
Duration.ofSeconds(-1)
is passed the message will not expire.
The time to live must be Duration.ofSeconds(-1)
or any positive number of seconds.
Returns:
setAccessPolicy
public void setAccessPolicy(List
Sets stored access policies on the queue.
Code Samples
Set a read only stored access policy
QueueAccessPolicy accessPolicy = new QueueAccessPolicy().setPermissions("r")
.setStartsOn(OffsetDateTime.now(ZoneOffset.UTC))
.setExpiresOn(OffsetDateTime.now(ZoneOffset.UTC).plusDays(10));
QueueSignedIdentifier permission = new QueueSignedIdentifier().setId("mypolicy").setAccessPolicy(accessPolicy);
client.setAccessPolicy(Collections.singletonList(permission));
System.out.println("Setting access policies completed.");
For more information, see the Azure Docs.
Parameters:
setAccessPolicyWithResponse
public Response
Sets stored access policies on the queue.
Code Samples
Set a read only stored access policy
QueueAccessPolicy accessPolicy = new QueueAccessPolicy().setPermissions("r")
.setStartsOn(OffsetDateTime.now(ZoneOffset.UTC))
.setExpiresOn(OffsetDateTime.now(ZoneOffset.UTC).plusDays(10));
QueueSignedIdentifier permission = new QueueSignedIdentifier().setId("mypolicy").setAccessPolicy(accessPolicy);
Response<Void> response = client.setAccessPolicyWithResponse(Collections.singletonList(permission),
Duration.ofSeconds(1), new Context(key1, value1));
System.out.printf("Setting access policies completed with status code %d", response.getStatusCode());
For more information, see the Azure Docs.
Parameters:
Returns:
setMetadata
public void setMetadata(Map
Sets the metadata of the queue. Passing in a null
value for metadata will clear the metadata associated with the queue.
Code Samples
Set the queue's metadata to "queue:metadataMap"
client.setMetadata(Collections.singletonMap("queue", "metadataMap"));
System.out.println("Setting metadata completed.");
Clear the queue's metadata
client.setMetadata(null);
System.out.println("Clearing metadata completed.");
For more information, see the Azure Docs.
Parameters:
setMetadataWithResponse
public Response
Sets the metadata of the queue. Passing in a null
value for metadata will clear the metadata associated with the queue.
Code Samples
Set the queue's metadata to "queue:metadataMap"
client.setMetadataWithResponse(Collections.singletonMap("queue", "metadataMap"),
Duration.ofSeconds(1), new Context(key1, value1));
System.out.println("Setting metadata completed.");
Clear the queue's metadata
Response<Void> response = client.setMetadataWithResponse(null, Duration.ofSeconds(1),
new Context(key1, value1));
System.out.printf("Clearing metadata completed with status code %d", response.getStatusCode());
For more information, see the Azure Docs.
Parameters:
Returns:
updateMessage
public UpdateMessageResult updateMessage(String messageId, String popReceipt, String messageText, Duration visibilityTimeout)
Updates the specific message in the queue with a new message and resets the visibility timeout.
Code Samples
Dequeue the first message and update it to "Hello again, Azure" and hide it for 5 seconds
QueueMessageItem queueMessageItem = client.receiveMessage();
UpdateMessageResult result = client.updateMessage(queueMessageItem.getMessageId(),
queueMessageItem.getPopReceipt(), "newText", null);
System.out.println("Complete updating the message with the receipt " + result.getPopReceipt());
For more information, see the Azure Docs.
Parameters:
Returns:
updateMessageWithResponse
public Response
Updates the specific message in the queue with a new message and resets the visibility timeout.
Code Samples
Dequeue the first message and update it to "Hello again, Azure" and hide it for 5 seconds
QueueMessageItem queueMessageItem = client.receiveMessage();
Response<UpdateMessageResult> response = client.updateMessageWithResponse(queueMessageItem.getMessageId(),
queueMessageItem.getPopReceipt(), "newText", null, Duration.ofSeconds(1),
new Context(key1, value1));
System.out.println("Complete updating the message with status code " + response.getStatusCode());
For more information, see the Azure Docs.
Parameters:
Returns: