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

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

commit 6f7084bad8b9c3a0e724872d8233f08b4cb537cd
Author: Andrea Cosentino <[email protected]>
AuthorDate: Fri Apr 17 09:26:25 2020 +0200

    CAMEL-14618 - Camel-aws-s3: Add an option to consumer to be able to move 
the consumed files to another bucket, regen website docs
---
 .../modules/ROOT/pages/aws2-s3-component.adoc       | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/docs/components/modules/ROOT/pages/aws2-s3-component.adoc 
b/docs/components/modules/ROOT/pages/aws2-s3-component.adoc
index 890ec64..bb73aec 100644
--- a/docs/components/modules/ROOT/pages/aws2-s3-component.adoc
+++ b/docs/components/modules/ROOT/pages/aws2-s3-component.adoc
@@ -49,7 +49,7 @@ 
from("aws2-s3://helloBucket?accessKey=yourAccessKey&secretKey=yourSecretKey&pref
 
 
 // component options: START
-The AWS2 S3 Storage Service component supports 32 options, which are listed 
below.
+The AWS2 S3 Storage Service component supports 34 options, which are listed 
below.
 
 
 
@@ -71,9 +71,11 @@ The AWS2 S3 Storage Service component supports 32 options, 
which are listed belo
 | *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
 | *deleteAfterRead* (consumer) | Delete objects from S3 after they have been 
retrieved. The delete is only performed if the Exchange is committed. If a 
rollback occurs, the object is not deleted. If this option is false, then the 
same objects will be retrieve over and over again on the polls. Therefore you 
need to use the Idempotent Consumer EIP in the route to filter out duplicates. 
You can filter using the AWS2S3Constants#BUCKET_NAME and AWS2S3Constants#KEY 
headers, or only the AWS2S3C [...]
 | *delimiter* (consumer) | The delimiter which is used in the 
com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we 
are interested in. |  | String
+| *destinationBucket* (consumer) | Define the destination bucket where an 
object must be moved when moveAfterRead is set to true. |  | String
 | *fileName* (consumer) | To get the object from the bucket with the given 
file name |  | String
 | *includeBody* (consumer) | If it is true, the exchange body will be set to a 
stream to the contents of the file. If false, the headers will be set with the 
S3 object metadata, but the body will be null. This option is strongly related 
to autocloseBody option. In case of setting includeBody to true and 
autocloseBody to false, it will be up to the caller to close the S3Object 
stream. Setting autocloseBody to true, will close the S3Object stream 
automatically. | true | boolean
 | *includeFolders* (consumer) | If it is true, the folders/directories will be 
consumed. If it is false, they will be ignored, and Exchanges will not be 
created for those | true | boolean
+| *moveAfterRead* (consumer) | Move objects from S3 bucket to a different 
bucket after they have been retrieved. To accomplish the operation the 
destinationBucket option must be set. The copy bucket operation is only 
performed if the Exchange is committed. If a rollback occurs, the object is not 
moved. | false | boolean
 | *prefix* (consumer) | The prefix which is used in the 
com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we 
are interested in. |  | String
 | *autocloseBody* (consumer) | If this option is true and includeBody is true, 
then the S3Object.close() method will be called on exchange completion. This 
option is strongly related to includeBody option. In case of setting 
includeBody to true and autocloseBody to false, it will be up to the caller to 
close the S3Object stream. Setting autocloseBody to true, will close the 
S3Object stream automatically. | true | boolean
 | *deleteAfterWrite* (producer) | Delete file object after the S3 file has 
been uploaded | false | boolean
@@ -120,7 +122,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (52 parameters):
+=== Query Parameters (54 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -140,11 +142,13 @@ with the following path and query parameters:
 | *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
 | *deleteAfterRead* (consumer) | Delete objects from S3 after they have been 
retrieved. The delete is only performed if the Exchange is committed. If a 
rollback occurs, the object is not deleted. If this option is false, then the 
same objects will be retrieve over and over again on the polls. Therefore you 
need to use the Idempotent Consumer EIP in the route to filter out duplicates. 
You can filter using the AWS2S3Constants#BUCKET_NAME and AWS2S3Constants#KEY 
headers, or only the AWS2S3C [...]
 | *delimiter* (consumer) | The delimiter which is used in the 
com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we 
are interested in. |  | String
+| *destinationBucket* (consumer) | Define the destination bucket where an 
object must be moved when moveAfterRead is set to true. |  | String
 | *fileName* (consumer) | To get the object from the bucket with the given 
file name |  | String
 | *includeBody* (consumer) | If it is true, the exchange body will be set to a 
stream to the contents of the file. If false, the headers will be set with the 
S3 object metadata, but the body will be null. This option is strongly related 
to autocloseBody option. In case of setting includeBody to true and 
autocloseBody to false, it will be up to the caller to close the S3Object 
stream. Setting autocloseBody to true, will close the S3Object stream 
automatically. | true | boolean
 | *includeFolders* (consumer) | If it is true, the folders/directories will be 
consumed. If it is false, they will be ignored, and Exchanges will not be 
created for those | true | boolean
 | *maxConnections* (consumer) | Set the maxConnections parameter in the S3 
client configuration | 60 | int
 | *maxMessagesPerPoll* (consumer) | Gets the maximum number of messages as a 
limit to poll at each polling. Gets the maximum number of messages as a limit 
to poll at each polling. The default value is 10. Use 0 or a negative number to 
set it as unlimited. | 10 | int
+| *moveAfterRead* (consumer) | Move objects from S3 bucket to a different 
bucket after they have been retrieved. To accomplish the operation the 
destinationBucket option must be set. The copy bucket operation is only 
performed if the Exchange is committed. If a rollback occurs, the object is not 
moved. | false | boolean
 | *prefix* (consumer) | The prefix which is used in the 
com.amazonaws.services.s3.model.ListObjectsRequest to only consume objects we 
are interested in. |  | String
 | *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll 
any files, you can enable this option to send an empty message (no body) 
instead. | false | boolean
 | *autocloseBody* (consumer) | If this option is true and includeBody is true, 
then the S3Object.close() method will be called on exchange completion. This 
option is strongly related to includeBody option. In case of setting 
includeBody to true and autocloseBody to false, it will be up to the caller to 
close the S3Object stream. Setting autocloseBody to true, will close the 
S3Object stream automatically. | true | boolean
@@ -503,6 +507,19 @@ Some users like to consume stuff from a bucket and move 
the content in a differe
 If this is case for you, don't forget to remove the bucketName header from the 
incoming exchange of the consumer, otherwise the file will be always 
overwritten on the same 
 original bucket.
 
+== MoveAfterRead consumer option
+
+In addition to deleteAfterRead it has been added another option, 
moveAfterRead. With this option enabled the consumed object will be moved to a 
target destinationBucket instead of being only deleted.
+This will require specifying the destinationBucket option. As example:
+
+[source,java]
+--------------------------------------------------------------------------------
+  
from("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&moveAfterRead=true&destinationBucket=myothercamelbucket")
+  .to("mock:result");
+--------------------------------------------------------------------------------
+
+In this case the objects consumed will be moved to myothercamelbucket bucket 
and deleted from the original one (because of deleteAfterRead set to true as 
default).
+
 == Dependencies
 
 Maven users will need to add the following dependency to their pom.xml.

Reply via email to