You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/10/16 06:11:15 UTC

[camel] branch master updated: CAMEL-15680: [camel-azure] Add blob batch filtering capability (#4443)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new 61b03d3  CAMEL-15680: [camel-azure] Add blob batch filtering capability (#4443)
61b03d3 is described below

commit 61b03d39b1c772683ae5e8e1e8357bc80d127761
Author: Luigi De Masi <55...@users.noreply.github.com>
AuthorDate: Fri Oct 16 08:07:19 2020 +0200

    CAMEL-15680: [camel-azure] Add blob batch filtering capability (#4443)
---
 .../catalog/docs/azure-storage-blob-component.adoc |  9 ++--
 .../storage/blob/BlobComponentConfigurer.java      |  3 ++
 .../azure/storage/blob/BlobEndpointConfigurer.java |  3 ++
 .../azure/storage/blob/BlobEndpointUriFactory.java |  3 +-
 .../azure/storage/blob/azure-storage-blob.json     |  2 +
 .../main/docs/azure-storage-blob-component.adoc    |  9 ++--
 .../azure/storage/blob/BlobConfiguration.java      | 14 +++++
 .../blob/BlobConfigurationOptionsProxy.java        |  8 +++
 .../azure/storage/blob/BlobConstants.java          |  1 +
 .../azure/storage/blob/BlobExchangeHeaders.java    |  4 ++
 .../blob/operations/BlobContainerOperations.java   | 19 ++++---
 .../blob/BlobConfigurationOptionsProxyTest.java    | 62 ++++++++++++++++++++++
 .../operations/BlobContainerOperationsTest.java    | 47 ++++++++++++++++
 .../AzureStorageBlobComponentBuilderFactory.java   | 15 ++++++
 .../endpoint/dsl/BlobEndpointBuilderFactory.java   | 42 +++++++++++++++
 .../ROOT/pages/azure-storage-blob-component.adoc   |  9 ++--
 16 files changed, 234 insertions(+), 16 deletions(-)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/azure-storage-blob-component.adoc b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/azure-storage-blob-component.adoc
index 2590c33..5180175 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/azure-storage-blob-component.adoc
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/azure-storage-blob-component.adoc
@@ -65,7 +65,7 @@ to("file://blobdirectory");
 
 
 // component options: START
-The Azure Storage Blob Service component supports 27 options, which are listed below.
+The Azure Storage Blob Service component supports 28 options, which are listed below.
 
 
 
@@ -84,6 +84,7 @@ The Azure Storage Blob Service component supports 27 options, which are listed b
 | *maxResultsPerPage* (common) | Specifies the maximum number of blobs to return, including all BlobPrefix elements. If the request does not specify maxResultsPerPage or specifies a value greater than 5,000, the server will return up to 5,000 items. |  | Integer
 | *maxRetryRequests* (common) | Specifies the maximum number of additional HTTP Get requests that will be made while reading the data from a response body. | 0 | int
 | *prefix* (common) | Filters the results to return only blobs whose names begin with the specified prefix. May be null to return all blobs. |  | String
+| *regex* (common) | Filters the results to return only blobs whose names match the specified regular expression. May be null to return all if both prefix and regex are set, regex takes the priority and prefix is ignored. |  | String
 | *serviceClient* (common) | Client to a storage account. This client does not hold any state about a particular storage account but is instead a convenient way of sending off appropriate requests to the resource on the service. It may also be used to construct URLs to blobs and containers. This client contains operations on a service account. Operations on a container are available on BlobContainerClient through BlobServiceClient#getBlobContainerClient(String), and operations on a blob  [...]
 | *timeout* (common) | An optional timeout value beyond which a RuntimeException will be raised. |  | Duration
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
@@ -122,7 +123,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (30 parameters):
+=== Query Parameters (31 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -140,6 +141,7 @@ with the following path and query parameters:
 | *maxResultsPerPage* (common) | Specifies the maximum number of blobs to return, including all BlobPrefix elements. If the request does not specify maxResultsPerPage or specifies a value greater than 5,000, the server will return up to 5,000 items. |  | Integer
 | *maxRetryRequests* (common) | Specifies the maximum number of additional HTTP Get requests that will be made while reading the data from a response body. | 0 | int
 | *prefix* (common) | Filters the results to return only blobs whose names begin with the specified prefix. May be null to return all blobs. |  | String
+| *regex* (common) | Filters the results to return only blobs whose names match the specified regular expression. May be null to return all if both prefix and regex are set, regex takes the priority and prefix is ignored. |  | String
 | *serviceClient* (common) | Client to a storage account. This client does not hold any state about a particular storage account but is instead a convenient way of sending off appropriate requests to the resource on the service. It may also be used to construct URLs to blobs and containers. This client contains operations on a service account. Operations on a container are available on BlobContainerClient through BlobServiceClient#getBlobContainerClient(String), and operations on a blob  [...]
 | *timeout* (common) | An optional timeout value beyond which a RuntimeException will be raised. |  | Duration
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
@@ -195,7 +197,7 @@ aggregate this number of messages.
 |`CamelAzureStorageBlobPublicAccessType`|`BlobConstants.PUBLIC_ACCESS_TYPE`|`PublicAccessType`|`createContainer`|Specifies how the data in this container is available to the public. Pass `null` for no public access.
 |`CamelAzureStorageBlobRequestCondition`|`BlobConstants.BLOB_REQUEST_CONDITION`|`BlobRequestConditions`|Operations related to container and blob|This contains values which will restrict the successful operation of a variety of requests to the conditions present. These conditions are entirely optional.
 |`CamelAzureStorageBlobListDetails`|`BlobConstants.BLOB_LIST_DETAILS`|`BlobListDetails`|`listBlobs`|The details for listing specific blobs
-|`CamelAzureStorageBlobPrefix`|`BlobConstants.PREFIX`|`String`|`listBlobs`|Filters the results to return only blobs whose names begin with the specified prefix. May be null to return all blobs.
+|`CamelAzureStorageBlobPrefix`|`BlobConstants.PREFIX`|`String`|`listBlobs`,`getBlob`|Filters the results to return only blobs whose names begin with the specified prefix. May be null to return all blobs.
 |`CamelAzureStorageBlobMaxResultsPerPage`|`BlobConstants.MAX_RESULTS_PER_PAGE`|`Integer`|`listBlobs`| Specifies the maximum number of blobs to return, including all BlobPrefix elements. If the request does not specify maxResultsPerPage or specifies a value greater than 5,000, the server will return up to 5,000 items.
 |`CamelAzureStorageBlobListBlobOptions`|`BlobConstants.LIST_BLOB_OPTIONS`|`ListBlobsOptions`|`listBlobs`|Defines options available to configure the behavior of a call to listBlobsFlatSegment on a {@link BlobContainerClient} object.
 |`CamelAzureStorageBlobHttpHeaders`|`BlobConstants.BLOB_HTTP_HEADERS`|`BlobHttpHeaders`|`uploadBlockBlob`, `commitBlobBlockList`, `createAppendBlob`, `createPageBlob`|  Additional parameters for a set of operations.
@@ -216,6 +218,7 @@ aggregate this number of messages.
 |`CamelAzureStorageBlobBlobName`|`BlobConstants.BLOB_NAME`|`String`|Operations related to blob| Override/set the blob name on the exchange headers.
 |`CamelAzureStorageBlobContainerName`|`BlobConstants.BLOB_CONTAINER_NAME`|`String`|Operations related to container and blob|Override/set the container name on the exchange headers.
 |`CamelAzureStorageBlobOperation`|`BlobConstants.BLOB_OPERATION`|`BlobOperationsDefinition`|All|Specify the producer operation to execute, please see the doc on this page related to producer operation.
+|`CamelAzureStorageBlobRegex`|`BlobConstants.REGEX`|`String`|`listBlobs`,`getBlob`|Filters the results to return only blobs whose names match the specified regular expression. May be null to return all. If both prefix and regex are set, regex takes the priority and prefix is ignored.
 |=======================================================================
 
 === Message headers set by either component producer or consumer
diff --git a/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobComponentConfigurer.java b/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobComponentConfigurer.java
index ede486d..9830ff4 100644
--- a/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobComponentConfigurer.java
+++ b/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobComponentConfigurer.java
@@ -30,6 +30,7 @@ public class BlobComponentConfigurer extends PropertyConfigurerSupport implement
         map.put("maxResultsPerPage", java.lang.Integer.class);
         map.put("maxRetryRequests", int.class);
         map.put("prefix", java.lang.String.class);
+        map.put("regex", java.lang.String.class);
         map.put("serviceClient", com.azure.storage.blob.BlobServiceClient.class);
         map.put("timeout", java.time.Duration.class);
         map.put("bridgeErrorHandler", boolean.class);
@@ -105,6 +106,7 @@ public class BlobComponentConfigurer extends PropertyConfigurerSupport implement
         case "pageblobsize":
         case "pageBlobSize": getOrCreateConfiguration(target).setPageBlobSize(property(camelContext, java.lang.Long.class, value)); return true;
         case "prefix": getOrCreateConfiguration(target).setPrefix(property(camelContext, java.lang.String.class, value)); return true;
+        case "regex": getOrCreateConfiguration(target).setRegex(property(camelContext, java.lang.String.class, value)); return true;
         case "serviceclient":
         case "serviceClient": getOrCreateConfiguration(target).setServiceClient(property(camelContext, com.azure.storage.blob.BlobServiceClient.class, value)); return true;
         case "timeout": getOrCreateConfiguration(target).setTimeout(property(camelContext, java.time.Duration.class, value)); return true;
@@ -167,6 +169,7 @@ public class BlobComponentConfigurer extends PropertyConfigurerSupport implement
         case "pageblobsize":
         case "pageBlobSize": return getOrCreateConfiguration(target).getPageBlobSize();
         case "prefix": return getOrCreateConfiguration(target).getPrefix();
+        case "regex": return getOrCreateConfiguration(target).getRegex();
         case "serviceclient":
         case "serviceClient": return getOrCreateConfiguration(target).getServiceClient();
         case "timeout": return getOrCreateConfiguration(target).getTimeout();
diff --git a/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointConfigurer.java b/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointConfigurer.java
index 14cca2b..19c849c 100644
--- a/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointConfigurer.java
+++ b/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointConfigurer.java
@@ -32,6 +32,7 @@ public class BlobEndpointConfigurer extends PropertyConfigurerSupport implements
         map.put("maxResultsPerPage", java.lang.Integer.class);
         map.put("maxRetryRequests", int.class);
         map.put("prefix", java.lang.String.class);
+        map.put("regex", java.lang.String.class);
         map.put("serviceClient", com.azure.storage.blob.BlobServiceClient.class);
         map.put("timeout", java.time.Duration.class);
         map.put("bridgeErrorHandler", boolean.class);
@@ -108,6 +109,7 @@ public class BlobEndpointConfigurer extends PropertyConfigurerSupport implements
         case "pageblobsize":
         case "pageBlobSize": target.getConfiguration().setPageBlobSize(property(camelContext, java.lang.Long.class, value)); return true;
         case "prefix": target.getConfiguration().setPrefix(property(camelContext, java.lang.String.class, value)); return true;
+        case "regex": target.getConfiguration().setRegex(property(camelContext, java.lang.String.class, value)); return true;
         case "serviceclient":
         case "serviceClient": target.getConfiguration().setServiceClient(property(camelContext, com.azure.storage.blob.BlobServiceClient.class, value)); return true;
         case "synchronous": target.setSynchronous(property(camelContext, boolean.class, value)); return true;
@@ -176,6 +178,7 @@ public class BlobEndpointConfigurer extends PropertyConfigurerSupport implements
         case "pageblobsize":
         case "pageBlobSize": return target.getConfiguration().getPageBlobSize();
         case "prefix": return target.getConfiguration().getPrefix();
+        case "regex": return target.getConfiguration().getRegex();
         case "serviceclient":
         case "serviceClient": return target.getConfiguration().getServiceClient();
         case "synchronous": return target.isSynchronous();
diff --git a/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointUriFactory.java b/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointUriFactory.java
index 8262726..7b488a7 100644
--- a/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointUriFactory.java
+++ b/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointUriFactory.java
@@ -20,7 +20,7 @@ public class BlobEndpointUriFactory extends org.apache.camel.support.component.E
     private static final Set<String> PROPERTY_NAMES;
     private static final Set<String> SECRET_PROPERTY_NAMES;
     static {
-        Set<String> props = new HashSet<>(32);
+        Set<String> props = new HashSet<>(33);
         props.add("blobName");
         props.add("basicPropertyBinding");
         props.add("accountName");
@@ -43,6 +43,7 @@ public class BlobEndpointUriFactory extends org.apache.camel.support.component.E
         props.add("exchangePattern");
         props.add("blockListType");
         props.add("createAppendBlob");
+        props.add("regex");
         props.add("lazyStartProducer");
         props.add("blobSequenceNumber");
         props.add("accessKey");
diff --git a/components/camel-azure-storage-blob/src/generated/resources/org/apache/camel/component/azure/storage/blob/azure-storage-blob.json b/components/camel-azure-storage-blob/src/generated/resources/org/apache/camel/component/azure/storage/blob/azure-storage-blob.json
index 07508c1..ed83841 100644
--- a/components/camel-azure-storage-blob/src/generated/resources/org/apache/camel/component/azure/storage/blob/azure-storage-blob.json
+++ b/components/camel-azure-storage-blob/src/generated/resources/org/apache/camel/component/azure/storage/blob/azure-storage-blob.json
@@ -34,6 +34,7 @@
     "maxResultsPerPage": { "kind": "property", "displayName": "Max Results Per Page", "group": "common", "label": "common", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Specifies the maximum number of blobs to return, including all BlobPrefix elements. If the request does not specify [...]
     "maxRetryRequests": { "kind": "property", "displayName": "Max Retry Requests", "group": "common", "label": "common", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Specifies the maximum number of additional HTTP Get requests that will be made while reading the data from a resp [...]
     "prefix": { "kind": "property", "displayName": "Prefix", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Filters the results to return only blobs whose names begin with the specified prefix. May be null to return all blobs." },
+    "regex": { "kind": "property", "displayName": "Regex", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Filters the results to return only blobs whose names match the specified regular expression. May be null to return all if both prefix and regex  [...]
     "serviceClient": { "kind": "property", "displayName": "Service Client", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.azure.storage.blob.BlobServiceClient", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Client to a storage account. This client does not hold any state about a particular storage account but is in [...]
     "timeout": { "kind": "property", "displayName": "Timeout", "group": "common", "label": "common", "required": false, "type": "object", "javaType": "java.time.Duration", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "An optional timeout value beyond which a RuntimeException will be raised." },
     "bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by [...]
@@ -65,6 +66,7 @@
     "maxResultsPerPage": { "kind": "parameter", "displayName": "Max Results Per Page", "group": "common", "label": "common", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Specifies the maximum number of blobs to return, including all BlobPrefix elements. If the request does not specif [...]
     "maxRetryRequests": { "kind": "parameter", "displayName": "Max Retry Requests", "group": "common", "label": "common", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Specifies the maximum number of additional HTTP Get requests that will be made while reading the data from a res [...]
     "prefix": { "kind": "parameter", "displayName": "Prefix", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Filters the results to return only blobs whose names begin with the specified prefix. May be null to return all blobs." },
+    "regex": { "kind": "parameter", "displayName": "Regex", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Filters the results to return only blobs whose names match the specified regular expression. May be null to return all if both prefix and regex [...]
     "serviceClient": { "kind": "parameter", "displayName": "Service Client", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.azure.storage.blob.BlobServiceClient", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Client to a storage account. This client does not hold any state about a particular storage account but is i [...]
     "timeout": { "kind": "parameter", "displayName": "Timeout", "group": "common", "label": "common", "required": false, "type": "object", "javaType": "java.time.Duration", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "An optional timeout value beyond which a RuntimeException will be raised." },
     "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled b [...]
diff --git a/components/camel-azure-storage-blob/src/main/docs/azure-storage-blob-component.adoc b/components/camel-azure-storage-blob/src/main/docs/azure-storage-blob-component.adoc
index 2590c33..5180175 100644
--- a/components/camel-azure-storage-blob/src/main/docs/azure-storage-blob-component.adoc
+++ b/components/camel-azure-storage-blob/src/main/docs/azure-storage-blob-component.adoc
@@ -65,7 +65,7 @@ to("file://blobdirectory");
 
 
 // component options: START
-The Azure Storage Blob Service component supports 27 options, which are listed below.
+The Azure Storage Blob Service component supports 28 options, which are listed below.
 
 
 
@@ -84,6 +84,7 @@ The Azure Storage Blob Service component supports 27 options, which are listed b
 | *maxResultsPerPage* (common) | Specifies the maximum number of blobs to return, including all BlobPrefix elements. If the request does not specify maxResultsPerPage or specifies a value greater than 5,000, the server will return up to 5,000 items. |  | Integer
 | *maxRetryRequests* (common) | Specifies the maximum number of additional HTTP Get requests that will be made while reading the data from a response body. | 0 | int
 | *prefix* (common) | Filters the results to return only blobs whose names begin with the specified prefix. May be null to return all blobs. |  | String
+| *regex* (common) | Filters the results to return only blobs whose names match the specified regular expression. May be null to return all if both prefix and regex are set, regex takes the priority and prefix is ignored. |  | String
 | *serviceClient* (common) | Client to a storage account. This client does not hold any state about a particular storage account but is instead a convenient way of sending off appropriate requests to the resource on the service. It may also be used to construct URLs to blobs and containers. This client contains operations on a service account. Operations on a container are available on BlobContainerClient through BlobServiceClient#getBlobContainerClient(String), and operations on a blob  [...]
 | *timeout* (common) | An optional timeout value beyond which a RuntimeException will be raised. |  | Duration
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
@@ -122,7 +123,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (30 parameters):
+=== Query Parameters (31 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -140,6 +141,7 @@ with the following path and query parameters:
 | *maxResultsPerPage* (common) | Specifies the maximum number of blobs to return, including all BlobPrefix elements. If the request does not specify maxResultsPerPage or specifies a value greater than 5,000, the server will return up to 5,000 items. |  | Integer
 | *maxRetryRequests* (common) | Specifies the maximum number of additional HTTP Get requests that will be made while reading the data from a response body. | 0 | int
 | *prefix* (common) | Filters the results to return only blobs whose names begin with the specified prefix. May be null to return all blobs. |  | String
+| *regex* (common) | Filters the results to return only blobs whose names match the specified regular expression. May be null to return all if both prefix and regex are set, regex takes the priority and prefix is ignored. |  | String
 | *serviceClient* (common) | Client to a storage account. This client does not hold any state about a particular storage account but is instead a convenient way of sending off appropriate requests to the resource on the service. It may also be used to construct URLs to blobs and containers. This client contains operations on a service account. Operations on a container are available on BlobContainerClient through BlobServiceClient#getBlobContainerClient(String), and operations on a blob  [...]
 | *timeout* (common) | An optional timeout value beyond which a RuntimeException will be raised. |  | Duration
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
@@ -195,7 +197,7 @@ aggregate this number of messages.
 |`CamelAzureStorageBlobPublicAccessType`|`BlobConstants.PUBLIC_ACCESS_TYPE`|`PublicAccessType`|`createContainer`|Specifies how the data in this container is available to the public. Pass `null` for no public access.
 |`CamelAzureStorageBlobRequestCondition`|`BlobConstants.BLOB_REQUEST_CONDITION`|`BlobRequestConditions`|Operations related to container and blob|This contains values which will restrict the successful operation of a variety of requests to the conditions present. These conditions are entirely optional.
 |`CamelAzureStorageBlobListDetails`|`BlobConstants.BLOB_LIST_DETAILS`|`BlobListDetails`|`listBlobs`|The details for listing specific blobs
-|`CamelAzureStorageBlobPrefix`|`BlobConstants.PREFIX`|`String`|`listBlobs`|Filters the results to return only blobs whose names begin with the specified prefix. May be null to return all blobs.
+|`CamelAzureStorageBlobPrefix`|`BlobConstants.PREFIX`|`String`|`listBlobs`,`getBlob`|Filters the results to return only blobs whose names begin with the specified prefix. May be null to return all blobs.
 |`CamelAzureStorageBlobMaxResultsPerPage`|`BlobConstants.MAX_RESULTS_PER_PAGE`|`Integer`|`listBlobs`| Specifies the maximum number of blobs to return, including all BlobPrefix elements. If the request does not specify maxResultsPerPage or specifies a value greater than 5,000, the server will return up to 5,000 items.
 |`CamelAzureStorageBlobListBlobOptions`|`BlobConstants.LIST_BLOB_OPTIONS`|`ListBlobsOptions`|`listBlobs`|Defines options available to configure the behavior of a call to listBlobsFlatSegment on a {@link BlobContainerClient} object.
 |`CamelAzureStorageBlobHttpHeaders`|`BlobConstants.BLOB_HTTP_HEADERS`|`BlobHttpHeaders`|`uploadBlockBlob`, `commitBlobBlockList`, `createAppendBlob`, `createPageBlob`|  Additional parameters for a set of operations.
@@ -216,6 +218,7 @@ aggregate this number of messages.
 |`CamelAzureStorageBlobBlobName`|`BlobConstants.BLOB_NAME`|`String`|Operations related to blob| Override/set the blob name on the exchange headers.
 |`CamelAzureStorageBlobContainerName`|`BlobConstants.BLOB_CONTAINER_NAME`|`String`|Operations related to container and blob|Override/set the container name on the exchange headers.
 |`CamelAzureStorageBlobOperation`|`BlobConstants.BLOB_OPERATION`|`BlobOperationsDefinition`|All|Specify the producer operation to execute, please see the doc on this page related to producer operation.
+|`CamelAzureStorageBlobRegex`|`BlobConstants.REGEX`|`String`|`listBlobs`,`getBlob`|Filters the results to return only blobs whose names match the specified regular expression. May be null to return all. If both prefix and regex are set, regex takes the priority and prefix is ignored.
 |=======================================================================
 
 === Message headers set by either component producer or consumer
diff --git a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfiguration.java b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfiguration.java
index d066a88..b87e19a 100644
--- a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfiguration.java
+++ b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfiguration.java
@@ -85,6 +85,8 @@ public class BlobConfiguration implements Cloneable {
     private Long pageBlobSize = BlobConstants.PAGE_BLOB_DEFAULT_SIZE;
     @UriParam(label = "producer", defaultValue = "COMMITTED")
     private BlockListType blockListType = BlockListType.COMMITTED;
+    @UriParam(label = "common")
+    private String regex;
 
     /**
      * Azure account name to be used for authentication with azure blob services
@@ -375,6 +377,18 @@ public class BlobConfiguration implements Cloneable {
         this.autoDiscoverClient = autoDiscoverClient;
     }
 
+    /**
+     * Filters the results to return only blobs whose names match the specified regular expression. May be null to
+     * return all if both prefix and regex are set, regex takes the priority and prefix is ignored.
+     */
+    public String getRegex() {
+        return regex;
+    }
+
+    public void setRegex(String regex) {
+        this.regex = regex;
+    }
+
     // *************************************************
     //
     // *************************************************
diff --git a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxy.java b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxy.java
index 9d22760..d86c940 100644
--- a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxy.java
+++ b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxy.java
@@ -65,9 +65,17 @@ public class BlobConfigurationOptionsProxy {
     }
 
     public String getPrefix(final Exchange exchange) {
+        //if regex is set, prefix will not takes effect
+        if (ObjectHelper.isNotEmpty(getRegex(exchange))) {
+            return null;
+        }
         return getOption(BlobExchangeHeaders::getPrefixFromHeaders, configuration::getPrefix, exchange);
     }
 
+    public String getRegex(final Exchange exchange) {
+        return getOption(BlobExchangeHeaders::getRegexFromHeaders, configuration::getRegex, exchange);
+    }
+
     public Integer getMaxResultsPerPage(final Exchange exchange) {
         return getOption(BlobExchangeHeaders::getMaxResultsPerPageFromHeaders, configuration::getMaxResultsPerPage, exchange);
     }
diff --git a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConstants.java b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConstants.java
index aa5ecf8..b2426c7 100644
--- a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConstants.java
+++ b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConstants.java
@@ -63,6 +63,7 @@ public final class BlobConstants {
     public static final String LIST_BLOB_OPTIONS = HEADER_PREFIX + "ListBlobOptions";
     public static final String BLOB_LIST_DETAILS = HEADER_PREFIX + "ListDetails";
     public static final String PREFIX = HEADER_PREFIX + "Prefix";
+    public static final String REGEX = HEADER_PREFIX + "Regex";
     public static final String MAX_RESULTS_PER_PAGE = HEADER_PREFIX + "MaxResultsPerPage";
     public static final String TIMEOUT = HEADER_PREFIX + "Timeout";
     public static final String PUBLIC_ACCESS_TYPE = HEADER_PREFIX + "PublicAccessType";
diff --git a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobExchangeHeaders.java b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobExchangeHeaders.java
index 04dc931..8faed08 100644
--- a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobExchangeHeaders.java
+++ b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobExchangeHeaders.java
@@ -168,6 +168,10 @@ public class BlobExchangeHeaders {
         return getObjectFromHeaders(exchange, BlobConstants.PREFIX, String.class);
     }
 
+    public static String getRegexFromHeaders(final Exchange exchange) {
+        return getObjectFromHeaders(exchange, BlobConstants.REGEX, String.class);
+    }
+
     public static Integer getMaxResultsPerPageFromHeaders(final Exchange exchange) {
         return getObjectFromHeaders(exchange, BlobConstants.MAX_RESULTS_PER_PAGE, Integer.class);
     }
diff --git a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperations.java b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperations.java
index f1fea43..23f4a98 100644
--- a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperations.java
+++ b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperations.java
@@ -17,8 +17,12 @@
 package org.apache.camel.component.azure.storage.blob.operations;
 
 import java.time.Duration;
+import java.util.LinkedList;
+import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
+import com.azure.storage.blob.models.BlobItem;
 import com.azure.storage.blob.models.BlobRequestConditions;
 import com.azure.storage.blob.models.ListBlobsOptions;
 import com.azure.storage.blob.models.PublicAccessType;
@@ -39,7 +43,6 @@ public class BlobContainerOperations {
 
     public BlobContainerOperations(final BlobConfiguration configuration, final BlobContainerClientWrapper client) {
         ObjectHelper.notNull(client, "client cannot be null");
-
         this.client = client;
         this.configurationProxy = new BlobConfigurationOptionsProxy(configuration);
     }
@@ -47,8 +50,15 @@ public class BlobContainerOperations {
     public BlobOperationResponse listBlobs(final Exchange exchange) {
         final ListBlobsOptions listBlobOptions = configurationProxy.getListBlobOptions(exchange);
         final Duration timeout = configurationProxy.getTimeout(exchange);
-
-        return new BlobOperationResponse(client.listBlobs(listBlobOptions, timeout));
+        final String regex = configurationProxy.getRegex(exchange);
+        List<BlobItem> blobs = client.listBlobs(listBlobOptions, timeout);
+        if (ObjectHelper.isEmpty(regex)) {
+            return new BlobOperationResponse(blobs);
+        }
+        List<BlobItem> filteredBlobs = blobs.stream()
+                .filter(x -> x.getName().matches(regex))
+                .collect(Collectors.toCollection(LinkedList<BlobItem>::new));
+        return new BlobOperationResponse(filteredBlobs);
     }
 
     public BlobOperationResponse createContainer(final Exchange exchange) {
@@ -58,17 +68,14 @@ public class BlobContainerOperations {
 
         final BlobExchangeHeaders blobExchangeHeaders
                 = new BlobExchangeHeaders().httpHeaders(client.createContainer(metadata, publicAccessType, timeout));
-
         return new BlobOperationResponse(true, blobExchangeHeaders.toMap());
     }
 
     public BlobOperationResponse deleteContainer(final Exchange exchange) {
         final BlobRequestConditions blobRequestConditions = configurationProxy.getBlobRequestConditions(exchange);
         final Duration timeout = configurationProxy.getTimeout(exchange);
-
         final BlobExchangeHeaders blobExchangeHeaders
                 = new BlobExchangeHeaders().httpHeaders(client.deleteContainer(blobRequestConditions, timeout));
-
         return new BlobOperationResponse(true, blobExchangeHeaders.toMap());
     }
 }
diff --git a/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxyTest.java b/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxyTest.java
index 94991ed..59a5a8c 100644
--- a/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxyTest.java
+++ b/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxyTest.java
@@ -49,4 +49,66 @@ class BlobConfigurationOptionsProxyTest extends CamelTestSupport {
 
         assertNull(configurationOptionsProxy.getBlobName(exchange));
     }
+
+    @Test
+    void testIfCorrectOptionsReturnedCorrectlyWithPrefixAndRegexSet() {
+        final BlobConfiguration configuration = new BlobConfiguration();
+
+        final Exchange exchange = new DefaultExchange(context);
+        final BlobConfigurationOptionsProxy configurationOptionsProxy = new BlobConfigurationOptionsProxy(configuration);
+
+        configuration.setPrefix("test");
+        configuration.setRegex(".*\\.exe");
+
+        assertNull(configurationOptionsProxy.getPrefix(exchange));
+        assertEquals(".*\\.exe", configurationOptionsProxy.getRegex(exchange));
+    }
+
+    @Test
+    void testIfCorrectOptionsReturnedCorrectlyWithPrefixAndRegexSetInHeader() {
+        final BlobConfiguration configuration = new BlobConfiguration();
+
+        // first case: when exchange is set
+        final Exchange exchange = new DefaultExchange(context);
+        final BlobConfigurationOptionsProxy configurationOptionsProxy = new BlobConfigurationOptionsProxy(configuration);
+
+        configuration.setPrefix("test");
+        configuration.setRegex(".*\\.exe");
+        exchange.getIn().setHeader(BlobConstants.PREFIX, "test2");
+        exchange.getIn().setHeader(BlobConstants.REGEX, ".*\\.pdf");
+        assertNull(configurationOptionsProxy.getPrefix(exchange));
+        assertEquals(".*\\.pdf", configurationOptionsProxy.getRegex(exchange));
+    }
+
+    @Test
+    void testIfCorrectOptionsReturnedCorrectlyWithPrefixSet() {
+        final BlobConfiguration configuration = new BlobConfiguration();
+
+        // first case: when exchange is set
+        final Exchange exchange = new DefaultExchange(context);
+        final BlobConfigurationOptionsProxy configurationOptionsProxy = new BlobConfigurationOptionsProxy(configuration);
+
+        configuration.setPrefix("test");
+        assertEquals("test", configurationOptionsProxy.getPrefix(exchange));
+
+        //test header override
+        exchange.getIn().setHeader(BlobConstants.PREFIX, "test2");
+        assertEquals("test2", configurationOptionsProxy.getPrefix(exchange));
+    }
+
+    @Test
+    void testIfCorrectOptionsReturnedCorrectlyWithRegexSet() {
+        final BlobConfiguration configuration = new BlobConfiguration();
+
+        // first case: when exchange is set
+        final Exchange exchange = new DefaultExchange(context);
+        final BlobConfigurationOptionsProxy configurationOptionsProxy = new BlobConfigurationOptionsProxy(configuration);
+
+        configuration.setRegex(".*\\.exe");
+        assertEquals(".*\\.exe", configurationOptionsProxy.getRegex(exchange));
+
+        //test header override
+        exchange.getIn().setHeader(BlobConstants.REGEX, ".*\\.pdf");
+        assertEquals(".*\\.pdf", configurationOptionsProxy.getRegex(exchange));
+    }
 }
diff --git a/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperationsTest.java b/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperationsTest.java
index e162257..d1761e4 100644
--- a/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperationsTest.java
+++ b/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperationsTest.java
@@ -32,6 +32,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
@@ -94,6 +95,30 @@ class BlobContainerOperationsTest {
         assertTrue(items.contains("item-2"));
     }
 
+    @Test
+    void testListBlobWithRegex() {
+
+        BlobConfiguration myConfiguration = new BlobConfiguration();
+        myConfiguration.setAccountName("cameldev");
+        myConfiguration.setContainerName("awesome2");
+        myConfiguration.setRegex(".*\\.pdf");
+
+        when(client.listBlobs(any(), any())).thenReturn(listBlobsMockWithRegex());
+
+        final BlobContainerOperations blobContainerOperations = new BlobContainerOperations(myConfiguration, client);
+        final BlobOperationResponse response = blobContainerOperations.listBlobs(null);
+
+        assertNotNull(response);
+
+        @SuppressWarnings("unchecked")
+        final List<BlobItem> body = (List<BlobItem>) response.getBody();
+        final List<String> items = body.stream().map(BlobItem::getName).collect(Collectors.toList());
+        assertEquals(3, items.size());
+        assertTrue(items.contains("invoice1.pdf"));
+        assertTrue(items.contains("invoice2.pdf"));
+        assertTrue(items.contains("invoice5.pdf"));
+    }
+
     private HttpHeaders createContainerMock() {
         final HttpHeaders httpHeaders = new HttpHeaders();
 
@@ -125,4 +150,26 @@ class BlobContainerOperationsTest {
         return items;
     }
 
+    private List<BlobItem> listBlobsMockWithRegex() {
+        final List<BlobItem> items = listBlobsMock();
+
+        final BlobItem blobItemPdf1 = new BlobItem().setName("invoice1.pdf").setVersionId("1").setDeleted(false);
+        final BlobItem blobItemPdf2 = new BlobItem().setName("invoice2.pdf").setVersionId("2").setDeleted(true);
+        final BlobItem blobItemPdf3 = new BlobItem().setName("invoice5.pdf").setVersionId("2").setDeleted(true);
+
+        final BlobItem blobItemExe1 = new BlobItem().setName("office.exe").setVersionId("1").setDeleted(false);
+        final BlobItem blobItemExe2 = new BlobItem().setName("autorun.exe").setVersionId("2").setDeleted(false);
+        final BlobItem blobItemExe3 = new BlobItem().setName("start.exe").setVersionId("2").setDeleted(true);
+
+        items.add(blobItemPdf1);
+        items.add(blobItemPdf2);
+        items.add(blobItemPdf3);
+
+        items.add(blobItemExe1);
+        items.add(blobItemExe2);
+        items.add(blobItemExe3);
+
+        return items;
+    }
+
 }
diff --git a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AzureStorageBlobComponentBuilderFactory.java b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AzureStorageBlobComponentBuilderFactory.java
index 1d8e575..c99ebd2 100644
--- a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AzureStorageBlobComponentBuilderFactory.java
+++ b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AzureStorageBlobComponentBuilderFactory.java
@@ -214,6 +214,20 @@ public interface AzureStorageBlobComponentBuilderFactory {
             return this;
         }
         /**
+         * Filters the results to return only blobs whose names match the
+         * specified regular expression. May be null to return all if both
+         * prefix and regex are set, regex takes the priority and prefix is
+         * ignored.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         */
+        default AzureStorageBlobComponentBuilder regex(java.lang.String regex) {
+            doSetProperty("regex", regex);
+            return this;
+        }
+        /**
          * Client to a storage account. This client does not hold any state
          * about a particular storage account but is instead a convenient way of
          * sending off appropriate requests to the resource on the service. It
@@ -476,6 +490,7 @@ public interface AzureStorageBlobComponentBuilderFactory {
             case "maxResultsPerPage": getOrCreateConfiguration((BlobComponent) component).setMaxResultsPerPage((java.lang.Integer) value); return true;
             case "maxRetryRequests": getOrCreateConfiguration((BlobComponent) component).setMaxRetryRequests((int) value); return true;
             case "prefix": getOrCreateConfiguration((BlobComponent) component).setPrefix((java.lang.String) value); return true;
+            case "regex": getOrCreateConfiguration((BlobComponent) component).setRegex((java.lang.String) value); return true;
             case "serviceClient": getOrCreateConfiguration((BlobComponent) component).setServiceClient((com.azure.storage.blob.BlobServiceClient) value); return true;
             case "timeout": getOrCreateConfiguration((BlobComponent) component).setTimeout((java.time.Duration) value); return true;
             case "bridgeErrorHandler": ((BlobComponent) component).setBridgeErrorHandler((boolean) value); return true;
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BlobEndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BlobEndpointBuilderFactory.java
index eec2f5b..76e61e1 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BlobEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BlobEndpointBuilderFactory.java
@@ -345,6 +345,20 @@ public interface BlobEndpointBuilderFactory {
             return this;
         }
         /**
+         * Filters the results to return only blobs whose names match the
+         * specified regular expression. May be null to return all if both
+         * prefix and regex are set, regex takes the priority and prefix is
+         * ignored.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointConsumerBuilder regex(String regex) {
+            doSetProperty("regex", regex);
+            return this;
+        }
+        /**
          * Client to a storage account. This client does not hold any state
          * about a particular storage account but is instead a convenient way of
          * sending off appropriate requests to the resource on the service. It
@@ -898,6 +912,20 @@ public interface BlobEndpointBuilderFactory {
             return this;
         }
         /**
+         * Filters the results to return only blobs whose names match the
+         * specified regular expression. May be null to return all if both
+         * prefix and regex are set, regex takes the priority and prefix is
+         * ignored.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointProducerBuilder regex(String regex) {
+            doSetProperty("regex", regex);
+            return this;
+        }
+        /**
          * Client to a storage account. This client does not hold any state
          * about a particular storage account but is instead a convenient way of
          * sending off appropriate requests to the resource on the service. It
@@ -1636,6 +1664,20 @@ public interface BlobEndpointBuilderFactory {
             return this;
         }
         /**
+         * Filters the results to return only blobs whose names match the
+         * specified regular expression. May be null to return all if both
+         * prefix and regex are set, regex takes the priority and prefix is
+         * ignored.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointBuilder regex(String regex) {
+            doSetProperty("regex", regex);
+            return this;
+        }
+        /**
          * Client to a storage account. This client does not hold any state
          * about a particular storage account but is instead a convenient way of
          * sending off appropriate requests to the resource on the service. It
diff --git a/docs/components/modules/ROOT/pages/azure-storage-blob-component.adoc b/docs/components/modules/ROOT/pages/azure-storage-blob-component.adoc
index dd2d9d9..b9ce1f3 100644
--- a/docs/components/modules/ROOT/pages/azure-storage-blob-component.adoc
+++ b/docs/components/modules/ROOT/pages/azure-storage-blob-component.adoc
@@ -67,7 +67,7 @@ to("file://blobdirectory");
 
 
 // component options: START
-The Azure Storage Blob Service component supports 27 options, which are listed below.
+The Azure Storage Blob Service component supports 28 options, which are listed below.
 
 
 
@@ -86,6 +86,7 @@ The Azure Storage Blob Service component supports 27 options, which are listed b
 | *maxResultsPerPage* (common) | Specifies the maximum number of blobs to return, including all BlobPrefix elements. If the request does not specify maxResultsPerPage or specifies a value greater than 5,000, the server will return up to 5,000 items. |  | Integer
 | *maxRetryRequests* (common) | Specifies the maximum number of additional HTTP Get requests that will be made while reading the data from a response body. | 0 | int
 | *prefix* (common) | Filters the results to return only blobs whose names begin with the specified prefix. May be null to return all blobs. |  | String
+| *regex* (common) | Filters the results to return only blobs whose names match the specified regular expression. May be null to return all if both prefix and regex are set, regex takes the priority and prefix is ignored. |  | String
 | *serviceClient* (common) | Client to a storage account. This client does not hold any state about a particular storage account but is instead a convenient way of sending off appropriate requests to the resource on the service. It may also be used to construct URLs to blobs and containers. This client contains operations on a service account. Operations on a container are available on BlobContainerClient through BlobServiceClient#getBlobContainerClient(String), and operations on a blob  [...]
 | *timeout* (common) | An optional timeout value beyond which a RuntimeException will be raised. |  | Duration
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
@@ -124,7 +125,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (30 parameters):
+=== Query Parameters (31 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -142,6 +143,7 @@ with the following path and query parameters:
 | *maxResultsPerPage* (common) | Specifies the maximum number of blobs to return, including all BlobPrefix elements. If the request does not specify maxResultsPerPage or specifies a value greater than 5,000, the server will return up to 5,000 items. |  | Integer
 | *maxRetryRequests* (common) | Specifies the maximum number of additional HTTP Get requests that will be made while reading the data from a response body. | 0 | int
 | *prefix* (common) | Filters the results to return only blobs whose names begin with the specified prefix. May be null to return all blobs. |  | String
+| *regex* (common) | Filters the results to return only blobs whose names match the specified regular expression. May be null to return all if both prefix and regex are set, regex takes the priority and prefix is ignored. |  | String
 | *serviceClient* (common) | Client to a storage account. This client does not hold any state about a particular storage account but is instead a convenient way of sending off appropriate requests to the resource on the service. It may also be used to construct URLs to blobs and containers. This client contains operations on a service account. Operations on a container are available on BlobContainerClient through BlobServiceClient#getBlobContainerClient(String), and operations on a blob  [...]
 | *timeout* (common) | An optional timeout value beyond which a RuntimeException will be raised. |  | Duration
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
@@ -197,7 +199,7 @@ aggregate this number of messages.
 |`CamelAzureStorageBlobPublicAccessType`|`BlobConstants.PUBLIC_ACCESS_TYPE`|`PublicAccessType`|`createContainer`|Specifies how the data in this container is available to the public. Pass `null` for no public access.
 |`CamelAzureStorageBlobRequestCondition`|`BlobConstants.BLOB_REQUEST_CONDITION`|`BlobRequestConditions`|Operations related to container and blob|This contains values which will restrict the successful operation of a variety of requests to the conditions present. These conditions are entirely optional.
 |`CamelAzureStorageBlobListDetails`|`BlobConstants.BLOB_LIST_DETAILS`|`BlobListDetails`|`listBlobs`|The details for listing specific blobs
-|`CamelAzureStorageBlobPrefix`|`BlobConstants.PREFIX`|`String`|`listBlobs`|Filters the results to return only blobs whose names begin with the specified prefix. May be null to return all blobs.
+|`CamelAzureStorageBlobPrefix`|`BlobConstants.PREFIX`|`String`|`listBlobs`,`getBlob`|Filters the results to return only blobs whose names begin with the specified prefix. May be null to return all blobs.
 |`CamelAzureStorageBlobMaxResultsPerPage`|`BlobConstants.MAX_RESULTS_PER_PAGE`|`Integer`|`listBlobs`| Specifies the maximum number of blobs to return, including all BlobPrefix elements. If the request does not specify maxResultsPerPage or specifies a value greater than 5,000, the server will return up to 5,000 items.
 |`CamelAzureStorageBlobListBlobOptions`|`BlobConstants.LIST_BLOB_OPTIONS`|`ListBlobsOptions`|`listBlobs`|Defines options available to configure the behavior of a call to listBlobsFlatSegment on a {@link BlobContainerClient} object.
 |`CamelAzureStorageBlobHttpHeaders`|`BlobConstants.BLOB_HTTP_HEADERS`|`BlobHttpHeaders`|`uploadBlockBlob`, `commitBlobBlockList`, `createAppendBlob`, `createPageBlob`|  Additional parameters for a set of operations.
@@ -218,6 +220,7 @@ aggregate this number of messages.
 |`CamelAzureStorageBlobBlobName`|`BlobConstants.BLOB_NAME`|`String`|Operations related to blob| Override/set the blob name on the exchange headers.
 |`CamelAzureStorageBlobContainerName`|`BlobConstants.BLOB_CONTAINER_NAME`|`String`|Operations related to container and blob|Override/set the container name on the exchange headers.
 |`CamelAzureStorageBlobOperation`|`BlobConstants.BLOB_OPERATION`|`BlobOperationsDefinition`|All|Specify the producer operation to execute, please see the doc on this page related to producer operation.
+|`CamelAzureStorageBlobRegex`|`BlobConstants.REGEX`|`String`|`listBlobs`,`getBlob`|Filters the results to return only blobs whose names match the specified regular expression. May be null to return all. If both prefix and regex are set, regex takes the priority and prefix is ignored.
 |=======================================================================
 
 === Message headers set by either component producer or consumer