This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch camel-3.x in repository https://gitbox.apache.org/repos/asf/camel.git
commit 680cc9082bc57735e708945636bda86b2f3006ed Author: mayurvaid-redvest <109327850+mayurvaid-redv...@users.noreply.github.com> AuthorDate: Mon Mar 13 22:48:00 2023 +0530 deliveryTag -> For manual ack (#9471) * deliveryTag -> For manual ack * Adding DELIVERY_TAG as constant * Referring DELIVERY_TAG constants * Adding readme docs for manual acknowledgement * Fixing checkstyle --- .../src/main/docs/spring-rabbitmq-component.adoc | 17 +++++++++++++++++ .../springrabbit/DefaultMessagePropertiesConverter.java | 3 +++ .../component/springrabbit/SpringRabbitMQConstants.java | 1 + 3 files changed, 21 insertions(+) diff --git a/components/camel-spring-rabbitmq/src/main/docs/spring-rabbitmq-component.adoc b/components/camel-spring-rabbitmq/src/main/docs/spring-rabbitmq-component.adoc index 40a88a0e29e..a1c8fd82d08 100644 --- a/components/camel-spring-rabbitmq/src/main/docs/spring-rabbitmq-component.adoc +++ b/components/camel-spring-rabbitmq/src/main/docs/spring-rabbitmq-component.adoc @@ -238,5 +238,22 @@ from("direct:order") .toD("spring-rabbit:order-${header.orderType}"); ---- +== Manual Acknowledgement + +If we need to manually acknowledge a message for some use case , we can +do it by setting and acknowledgeMode to Manual and using the below snippet +of code to get Channel and deliveryTag to manually acknowledge the message + +[source,java] +---- +from("spring-rabbitmq:%s?queues=%s&acknowledgeMode=MANUAL") + .process(exchange -> { + Channel channel = exchange.getProperty(SpringRabbitMQConstants.CHANNEL, Channel.class); + long deliveryTag = exchange.getIn().getHeader("deliveryTag",Long.class); + channel.basicAck(deliveryTag,false); + }) + +---- + include::spring-boot:partial$starter.adoc[] diff --git a/components/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/DefaultMessagePropertiesConverter.java b/components/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/DefaultMessagePropertiesConverter.java index 3d0ce92174a..8f72aa5d912 100644 --- a/components/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/DefaultMessagePropertiesConverter.java +++ b/components/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/DefaultMessagePropertiesConverter.java @@ -71,6 +71,9 @@ public class DefaultMessagePropertiesConverter implements MessagePropertiesConve if (messageProperties.getTimestamp() != null) { answer.put(Exchange.MESSAGE_TIMESTAMP, messageProperties.getTimestamp().getTime()); } + + // Helps in getting to acknowledge manually + answer.put(SpringRabbitMQConstants.DELIVERY_TAG, messageProperties.getDeliveryTag()); } return answer; diff --git a/components/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQConstants.java b/components/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQConstants.java index 7e51f6384e7..634aef08ece 100644 --- a/components/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQConstants.java +++ b/components/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQConstants.java @@ -39,6 +39,7 @@ public final class SpringRabbitMQConstants { public static final String DELIVERY_LIMIT = "x-delivery-limit"; public static final String EXPIRES = "x-expires"; public static final String SINGLE_ACTIVE_CONSUMER = "x-single-active-consumer"; + public static final String DELIVERY_TAG = "deliveryTag"; private SpringRabbitMQConstants() { // Constants class