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 e4dc14c7207f8a3ef1a78f3a25958213e4582dcf
Author: Andrea Cosentino <anco...@gmail.com>
AuthorDate: Thu Feb 11 14:18:10 2021 +0100

    CAMEL-16186 - Camel-AWS2-SQS: Support String as body for batch message
---
 .../camel/component/aws2/sqs/Sqs2Configuration.java      | 15 ++++++++++++++-
 .../apache/camel/component/aws2/sqs/Sqs2Producer.java    | 16 ++++++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git 
a/components/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/Sqs2Configuration.java
 
b/components/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/Sqs2Configuration.java
index 3347d84..58bda66 100644
--- 
a/components/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/Sqs2Configuration.java
+++ 
b/components/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/Sqs2Configuration.java
@@ -93,6 +93,8 @@ public class Sqs2Configuration implements Cloneable {
     private MessageDeduplicationIdStrategy messageDeduplicationIdStrategy = 
new ExchangeIdMessageDeduplicationIdStrategy();
     @UriParam(label = "producer")
     private Sqs2Operations operation;
+    @UriParam(label = "producer", defaultValue = ",")
+    private String batchSeparator;
 
     // queue properties
     @UriParam(label = "queue")
@@ -571,12 +573,23 @@ public class Sqs2Configuration implements Cloneable {
     public void setUseDefaultCredentialsProvider(boolean 
useDefaultCredentialsProvider) {
         this.useDefaultCredentialsProvider = useDefaultCredentialsProvider;
     }
+    
+    public String getBatchSeparator() {
+               return batchSeparator;
+       }
+
+    /**
+     * Set the separator when passing a String to send batch message operation
+     */
+       public void setBatchSeparator(String batchSeparator) {
+               this.batchSeparator = batchSeparator;
+       }    
 
     // *************************************************
     //
     // *************************************************
 
-    public Sqs2Configuration copy() {
+       public Sqs2Configuration copy() {
         try {
             return (Sqs2Configuration) super.clone();
         } catch (CloneNotSupportedException e) {
diff --git 
a/components/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/Sqs2Producer.java
 
b/components/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/Sqs2Producer.java
index abd7962..8719c77 100644
--- 
a/components/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/Sqs2Producer.java
+++ 
b/components/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/Sqs2Producer.java
@@ -129,6 +129,22 @@ public class Sqs2Producer extends DefaultProducer {
             SendMessageBatchResponse result = 
amazonSQS.sendMessageBatch(request.build());
             Message message = getMessageForResponse(exchange);
             message.setBody(result);
+        } else if (exchange.getIn().getBody() instanceof String) {
+            String c = exchange.getIn().getBody(String.class);
+            String[] elements = 
c.split(getConfiguration().getBatchSeparator());
+            for (String o : elements) {
+                SendMessageBatchRequestEntry.Builder entry = 
SendMessageBatchRequestEntry.builder();
+                entry.id(UUID.randomUUID().toString());
+                
entry.messageAttributes(translateAttributes(exchange.getIn().getHeaders(), 
exchange));
+                entry.messageBody(o);
+                addDelay(entry, exchange);
+                configureFifoAttributes(entry, exchange);
+                entries.add(entry.build());
+            }
+            request.entries(entries);
+            SendMessageBatchResponse result = 
amazonSQS.sendMessageBatch(request.build());
+            Message message = getMessageForResponse(exchange);
+            message.setBody(result);
         } else {
             SendMessageBatchRequest req = 
exchange.getIn().getBody(SendMessageBatchRequest.class);
             SendMessageBatchResponse result = amazonSQS.sendMessageBatch(req);

Reply via email to