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);