public final class QueueClientBuilder extends Object
QueueClients and QueueAsyncClients, calling buildClient constructs an instance of QueueClient and calling buildAsyncClient constructs an instance of QueueAsyncClient.
The client needs the endpoint of the Azure Storage Queue service, name of the queue, and authorization
credentials.
endpoint gives the builder the endpoint and may give the builder the
queueName and a SAS token that authorizes the
client.
Instantiating a synchronous Queue Client with SAS token
QueueClient client = new QueueClientBuilder()
.endpoint("https://${accountName}.queue.core.windows.net?${SASToken}")
.buildClient();
Instantiating an Asynchronous Queue Client with SAS token
QueueAsyncClient queueAsyncClient = new QueueClientBuilder()
.endpoint("https://{accountName}.queue.core.windows.net?{SASToken}")
.buildAsyncClient();
If the endpoint doesn't contain the queue name or SAS token they may be set using
queueName and SAS token.
Instantiating a synchronous Queue Client with credential
QueueClient client = new QueueClientBuilder()
.endpoint("https://${accountName}.queue.core.windows.net")
.queueName("myqueue")
.sasToken("{SASTokenQueryParams}")
.buildClient();
Instantiating an Asynchronous Queue Client with credential
QueueAsyncClient queueAsyncClient = new QueueClientBuilder()
.endpoint("https://{accountName}.queue.core.windows.net")
.queueName("myqueue")
.sasToken("{SASTokenQueryParams}")
.buildAsyncClient();
Another way to authenticate the client is using a StorageSharedKeyCredential. To create a
StorageSharedKeyCredential a connection string from the Storage Queue service must be used.
Set the StorageSharedKeyCredential with connectionString.
If the builder has both a SAS token and StorageSharedKeyCredential the StorageSharedKeyCredential will be preferred
when authorizing requests sent to the service.
Instantiating a synchronous Queue Client with connection string.
String connectionString = "DefaultEndpointsProtocol=https;AccountName={name};"
+ "AccountKey={key};EndpointSuffix={core.windows.net}";
QueueClient client = new QueueClientBuilder()
.connectionString(connectionString)
.buildClient();
Instantiating an Asynchronous Queue Client with connection string.
String connectionString = "DefaultEndpointsProtocol=https;AccountName={name};"
+ "AccountKey={key};EndpointSuffix={core.windows.net}";
QueueAsyncClient queueAsyncClient = new QueueClientBuilder()
.connectionString(connectionString)
.buildAsyncClient();
QueueClient,
QueueAsyncClient,
StorageSharedKeyCredential| Constructor and Description |
|---|
QueueClientBuilder()
Creates a builder instance that is able to configure and construct
QueueClients and QueueAsyncClients. |
| Modifier and Type | Method and Description |
|---|---|
QueueClientBuilder |
addPolicy(com.azure.core.http.policy.HttpPipelinePolicy pipelinePolicy)
Adds a pipeline policy to apply on each request sent.
|
QueueAsyncClient |
buildAsyncClient()
Creates a
QueueAsyncClient based on options set in the builder. |
QueueClient |
buildClient()
Creates a
QueueClient based on options set in the builder. |
QueueClientBuilder |
clientOptions(com.azure.core.util.ClientOptions clientOptions)
Sets the client options for all the requests made through the client.
|
QueueClientBuilder |
configuration(com.azure.core.util.Configuration configuration)
Sets the configuration object used to retrieve environment configuration values during building of the client.
|
QueueClientBuilder |
connectionString(String connectionString)
Sets the connection string to connect to the service.
|
QueueClientBuilder |
credential(com.azure.core.credential.AzureSasCredential credential)
Sets the
AzureSasCredential used to authorize requests sent to the service. |
QueueClientBuilder |
credential(StorageSharedKeyCredential credential)
Sets the
StorageSharedKeyCredential used to authorize requests sent to the service. |
QueueClientBuilder |
credential(com.azure.core.credential.TokenCredential credential)
Sets the
TokenCredential used to authorize requests sent to the service. |
QueueClientBuilder |
endpoint(String endpoint)
Sets the endpoint for the Azure Storage Queue instance that the client will interact with.
|
static com.azure.core.http.policy.HttpLogOptions |
getDefaultHttpLogOptions()
Gets the default Storage allowlist log headers and query parameters.
|
QueueClientBuilder |
httpClient(com.azure.core.http.HttpClient httpClient)
Sets the
HttpClient to use for sending a receiving requests to and from the service. |
QueueClientBuilder |
httpLogOptions(com.azure.core.http.policy.HttpLogOptions logOptions)
Sets the
HttpLogOptions for service requests. |
QueueClientBuilder |
messageEncoding(QueueMessageEncoding messageEncoding)
Sets the queue message encoding.
|
QueueClientBuilder |
pipeline(com.azure.core.http.HttpPipeline httpPipeline)
Sets the
HttpPipeline to use for the service client. |
QueueClientBuilder |
processMessageDecodingError(Consumer<QueueMessageDecodingError> processMessageDecodingErrorHandler)
Sets the handler that performs the tasks needed when a message is received or peaked from the queue
but cannot be decoded.
|
QueueClientBuilder |
processMessageDecodingErrorAsync(Function<QueueMessageDecodingError,Mono<Void>> processMessageDecodingErrorAsyncHandler)
Sets the asynchronous handler that performs the tasks needed when a message is received or peaked from the queue
but cannot be decoded.
|
QueueClientBuilder |
queueName(String queueName)
Sets the name of the queue that the client will interact with.
|
QueueClientBuilder |
retryOptions(RequestRetryOptions retryOptions)
Sets the request retry options for all the requests made through the client.
|
QueueClientBuilder |
sasToken(String sasToken)
Sets the SAS token used to authorize requests sent to the service.
|
QueueClientBuilder |
serviceVersion(QueueServiceVersion version)
Sets the
QueueServiceVersion that is used when making API requests. |
public QueueClientBuilder()
QueueClients and QueueAsyncClients.public QueueClient buildClient()
QueueClient based on options set in the builder. Every time buildClient() is called a
new instance of QueueClient is created.
If pipeline is set, then the pipeline, endpoint, and queueName are
used to create the client. All other builder settings are ignored.
NullPointerException - If endpoint or queueName have not been set.IllegalStateException - If neither a StorageSharedKeyCredential
or SAS token has been set.IllegalStateException - If multiple credentials have been specified.public QueueAsyncClient buildAsyncClient()
QueueAsyncClient based on options set in the builder. Every time buildAsyncClient() is
called a new instance of QueueAsyncClient is created.
If pipeline is set, then the pipeline, endpoint, and queueName are
used to create the client. All other builder settings are ignored.
NullPointerException - If endpoint or queueName have not been set.IllegalArgumentException - If neither a StorageSharedKeyCredential
or SAS token has been set.IllegalStateException - If multiple credentials have been specified.public QueueClientBuilder endpoint(String endpoint)
The first path segment, if the endpoint contains path segments, will be assumed to be the name of the queue that the client will interact with.
Query parameters of the endpoint will be parsed in an attempt to generate a
SAS token to authenticate requests sent to the service.
endpoint - The URL of the Azure Storage Queue instance to send service requests to and receive responses
from.IllegalArgumentException - If endpoint isn't a proper URLpublic QueueClientBuilder queueName(String queueName)
queueName - Name of the queueNullPointerException - If queueName is null.public QueueClientBuilder credential(StorageSharedKeyCredential credential)
StorageSharedKeyCredential used to authorize requests sent to the service.credential - StorageSharedKeyCredential.NullPointerException - If credential is null.public QueueClientBuilder credential(com.azure.core.credential.TokenCredential credential)
TokenCredential used to authorize requests sent to the service.credential - TokenCredential.NullPointerException - If credential is null.public QueueClientBuilder sasToken(String sasToken)
sasToken - The SAS token to use for authenticating requests. This string should only be the query parameters
(with or without a leading '?') and not a full url.NullPointerException - If sasToken is null.public QueueClientBuilder credential(com.azure.core.credential.AzureSasCredential credential)
AzureSasCredential used to authorize requests sent to the service.credential - AzureSasCredential used to authorize requests sent to the service.NullPointerException - If credential is null.public QueueClientBuilder connectionString(String connectionString)
connectionString - Connection string of the storage account.IllegalArgumentException - If connectionString is invalid.public QueueClientBuilder httpClient(com.azure.core.http.HttpClient httpClient)
HttpClient to use for sending a receiving requests to and from the service.httpClient - HttpClient to use for requests.public QueueClientBuilder addPolicy(com.azure.core.http.policy.HttpPipelinePolicy pipelinePolicy)
pipelinePolicy - a pipeline policyNullPointerException - If pipelinePolicy is null.public QueueClientBuilder httpLogOptions(com.azure.core.http.policy.HttpLogOptions logOptions)
HttpLogOptions for service requests.logOptions - The logging configuration to use when sending and receiving HTTP requests/responses.NullPointerException - If logOptions is null.public static com.azure.core.http.policy.HttpLogOptions getDefaultHttpLogOptions()
public QueueClientBuilder configuration(com.azure.core.util.Configuration configuration)
configuration - Configuration store used to retrieve environment configurations.public QueueClientBuilder retryOptions(RequestRetryOptions retryOptions)
retryOptions - RequestRetryOptions.NullPointerException - If retryOptions is null.public QueueClientBuilder pipeline(com.azure.core.http.HttpPipeline httpPipeline)
HttpPipeline to use for the service client.
If pipeline is set, all other settings are ignored, aside from endpoint.httpPipeline - HttpPipeline to use for sending service requests and receiving responses.public QueueClientBuilder clientOptions(com.azure.core.util.ClientOptions clientOptions)
clientOptions - ClientOptions.NullPointerException - If clientOptions is null.public QueueClientBuilder messageEncoding(QueueMessageEncoding messageEncoding)
messageEncoding - QueueMessageEncoding.NullPointerException - If messageEncoding is null.public QueueClientBuilder processMessageDecodingErrorAsync(Function<QueueMessageDecodingError,Mono<Void>> processMessageDecodingErrorAsyncHandler)
Such message can be received or peaked when queue is expecting certain QueueMessageEncoding
but there's another producer that is not encoding messages in expected way.
I.e. the queue contains messages with different encoding.
QueueMessageDecodingError contains QueueAsyncClient for the queue that has received
the message as well as QueueMessageDecodingError.getQueueMessageItem() or
QueueMessageDecodingError.getPeekedMessageItem() with raw body, i.e. no decoding will be attempted
so that body can be inspected as has been received from the queue.
The handler won't attempt to remove the message from the queue. Therefore such handling should be included into handler itself.
Code Samples
String connectionString = "DefaultEndpointsProtocol=https;AccountName={name};"
+ "AccountKey={key};EndpointSuffix={core.windows.net}";
Function<QueueMessageDecodingError, Mono<Void>> processMessageDecodingErrorHandler =
(queueMessageDecodingFailure) -> {
QueueMessageItem queueMessageItem = queueMessageDecodingFailure.getQueueMessageItem();
PeekedMessageItem peekedMessageItem = queueMessageDecodingFailure.getPeekedMessageItem();
if (queueMessageItem != null) {
System.out.printf("Received badly encoded message, messageId=%s, messageBody=%s",
queueMessageItem.getMessageId(),
queueMessageItem.getBody().toString());
return queueMessageDecodingFailure
.getQueueAsyncClient()
.deleteMessage(queueMessageItem.getMessageId(), queueMessageItem.getPopReceipt());
} else if (peekedMessageItem != null) {
System.out.printf("Peeked badly encoded message, messageId=%s, messageBody=%s",
peekedMessageItem.getMessageId(),
peekedMessageItem.getBody().toString());
return Mono.empty();
} else {
return Mono.empty();
}
};
QueueClient client = new QueueClientBuilder()
.connectionString(connectionString)
.processMessageDecodingErrorAsync(processMessageDecodingErrorHandler)
.buildClient();
processMessageDecodingErrorAsyncHandler - the handler.public QueueClientBuilder processMessageDecodingError(Consumer<QueueMessageDecodingError> processMessageDecodingErrorHandler)
Such message can be received or peaked when queue is expecting certain QueueMessageEncoding
but there's another producer that is not encoding messages in expected way.
I.e. the queue contains messages with different encoding.
QueueMessageDecodingError contains QueueAsyncClient for the queue that has received
the message as well as QueueMessageDecodingError.getQueueMessageItem() or
QueueMessageDecodingError.getPeekedMessageItem() with raw body, i.e. no decoding will be attempted
so that body can be inspected as has been received from the queue.
The handler won't attempt to remove the message from the queue. Therefore such handling should be included into handler itself.
Code Samples
String connectionString = "DefaultEndpointsProtocol=https;AccountName={name};"
+ "AccountKey={key};EndpointSuffix={core.windows.net}";
Consumer<QueueMessageDecodingError> processMessageDecodingErrorHandler =
(queueMessageDecodingFailure) -> {
QueueMessageItem queueMessageItem = queueMessageDecodingFailure.getQueueMessageItem();
PeekedMessageItem peekedMessageItem = queueMessageDecodingFailure.getPeekedMessageItem();
if (queueMessageItem != null) {
System.out.printf("Received badly encoded message, messageId=%s, messageBody=%s",
queueMessageItem.getMessageId(),
queueMessageItem.getBody().toString());
queueMessageDecodingFailure
.getQueueClient()
.deleteMessage(queueMessageItem.getMessageId(), queueMessageItem.getPopReceipt());
} else if (peekedMessageItem != null) {
System.out.printf("Peeked badly encoded message, messageId=%s, messageBody=%s",
peekedMessageItem.getMessageId(),
peekedMessageItem.getBody().toString());
}
};
QueueClient client = new QueueClientBuilder()
.connectionString(connectionString)
.processMessageDecodingError(processMessageDecodingErrorHandler)
.buildClient();
processMessageDecodingErrorHandler - the handler.public QueueClientBuilder serviceVersion(QueueServiceVersion version)
QueueServiceVersion that is used when making API requests.
If a service version is not provided, the service version that will be used will be the latest known service version based on the version of the client library being used. If no service version is specified, updating to a newer version of the client library will have the result of potentially moving to a newer service version.
Targeting a specific service version may also mean that the service will return an error for newer APIs.
version - QueueServiceVersion of the service to be used when making requests.Visit the Azure for Java Developers site for more Java documentation, including quick starts, tutorials, and code samples.