[
https://issues.apache.org/jira/browse/CAMEL-10340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15532016#comment-15532016
]
Andrea Cosentino commented on CAMEL-10340:
------------------------------------------
Hello [~yanbasic],
Looking at the docs of AWS-SQS component I see:
deleteIfFiltered: Camel 2.12.2,2.13.0 Whether or not to send the DeleteMessage
to the SQS queue if an exchange fails to get through a filter. If 'false' and
exchange does not make it through a Camel filter upstream in the route, then
don't send DeleteMessage.
In your route all the messages will be deleted because you set deleteAfterRead
to true (and 'bar' will be deleted too), since deleteIfFiltered is set to true,
the or operator will return true and the whole condition will be true, without
taking into account the filter. So I guess the deleteIfFiltered will work only
if deleteAfterRead is set to false. I guess this is expected because
deleteIfFiltered has a default value of true, like deleteAfterRead.
I believe we should change this behaviour or at least evaluate the two
behaviour in a separated way.
> camel-aws - SQS option deleteAfterRead not work if set deleteIfFiltered=false
> -----------------------------------------------------------------------------
>
> Key: CAMEL-10340
> URL: https://issues.apache.org/jira/browse/CAMEL-10340
> Project: Camel
> Issue Type: Bug
> Components: camel-aws
> Affects Versions: 2.17.3
> Reporter: Yi Yan
> Priority: Minor
> Attachments: SqsConsumerDeleteTest.java
>
>
> I'm using aws-sqs 2.17.3, if I set deleteAfterRead=true and
> deleteIfFiltered=false in my DSL, the message will not be deleted. If I want
> to delete the message after read it, I have to set deleteAfterRead and
> deleteIfFiltered both with true when I use the two options in one DSL, but in
> fact there is no filter in my route, the message should be removed whatever
> the deleteIfFiltered option set to ture or false.
> {code:title=SqsConsumerDeleteTest.java|borderStyle=solid}
> from("aws-sqs:my-quque"
> + "?amazonSQSClient=#conn_cAWSConnection_1"
> + "&deleteAfterRead=" + true + "&deleteIfFiltered="
> + false).to("log:qs_route.cLog_1" + "?level=DEBUG").to("mock:mock_1");
> {code}
> I attached my test file, after run the test method, the sqs message still
> exists in the sqs queue after 30 seconds.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)