CAMEL-11881: Handling special arguments when declaring queues
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/a57a06e6 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a57a06e6 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a57a06e6 Branch: refs/heads/camel-2.19.x Commit: a57a06e609970427bb58e0e7a2215fe7352824e6 Parents: 2b8e5ad Author: Veiga Ortiz, HeÌctor <hector.veiga-or...@here.com> Authored: Thu Oct 5 19:16:32 2017 -0500 Committer: Claus Ibsen <davscl...@apache.org> Committed: Fri Oct 6 10:29:50 2017 +0200 ---------------------------------------------------------------------- .../component/rabbitmq/RabbitMQConstants.java | 3 +++ .../rabbitmq/RabbitMQDeclareSupport.java | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/a57a06e6/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQConstants.java ---------------------------------------------------------------------- diff --git a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQConstants.java b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQConstants.java index 0ae82b2..fc6a326 100644 --- a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQConstants.java +++ b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQConstants.java @@ -42,6 +42,9 @@ public final class RabbitMQConstants { public static final String RABBITMQ_DEAD_LETTER_ROUTING_KEY = "x-dead-letter-routing-key"; public static final String RABBITMQ_DIRECT_REPLY_EXCHANGE = ""; public static final String RABBITMQ_DIRECT_REPLY_ROUTING_KEY = "amq.rabbitmq.reply-to"; + public static final String RABBITMQ_QUEUE_LENGHT_LIMIT_KEY = "x-max-length"; + public static final String RABBITMQ_QUEUE_MESSAGE_TTL_KEY = "x-message-ttl"; + public static final String RABBITMQ_QUEUE_TTL_KEY = "x-expires"; private RabbitMQConstants() { //Constants class http://git-wip-us.apache.org/repos/asf/camel/blob/a57a06e6/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQDeclareSupport.java ---------------------------------------------------------------------- diff --git a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQDeclareSupport.java b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQDeclareSupport.java index b38eae9..03fc325 100644 --- a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQDeclareSupport.java +++ b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQDeclareSupport.java @@ -60,9 +60,27 @@ public class RabbitMQDeclareSupport { populateQueueArgumentsFromDeadLetterExchange(queueArgs); populateQueueArgumentsFromConfigurer(queueArgs); queueArgs.putAll(endpoint.getQueueArgs()); + formatSpecialQueueArguments(queueArgs); return queueArgs; } + private void formatSpecialQueueArguments(Map<String, Object> queueArgs) { + Object queueLengthLimit = queueArgs.get(RabbitMQConstants.RABBITMQ_QUEUE_LENGHT_LIMIT_KEY); + if (queueLengthLimit != null && queueLengthLimit instanceof String) { + queueArgs.put(RabbitMQConstants.RABBITMQ_QUEUE_LENGHT_LIMIT_KEY, Long.parseLong((String) queueLengthLimit)); + } + + Object queueMessageTtl = queueArgs.get(RabbitMQConstants.RABBITMQ_QUEUE_MESSAGE_TTL_KEY); + if (queueMessageTtl != null && queueMessageTtl instanceof String) { + queueArgs.put(RabbitMQConstants.RABBITMQ_QUEUE_MESSAGE_TTL_KEY, Long.parseLong((String) queueMessageTtl)); + } + + Object queueExpiration = queueArgs.get(RabbitMQConstants.RABBITMQ_QUEUE_TTL_KEY); + if (queueExpiration != null && queueExpiration instanceof String) { + queueArgs.put(RabbitMQConstants.RABBITMQ_QUEUE_TTL_KEY, Long.parseLong((String) queueExpiration)); + } + } + private Map<String, Object> populateQueueArgumentsFromDeadLetterExchange(final Map<String, Object> queueArgs) { if (endpoint.getDeadLetterExchange() != null) { queueArgs.put(RabbitMQConstants.RABBITMQ_DEAD_LETTER_EXCHANGE, endpoint.getDeadLetterExchange());