[ 
https://issues.apache.org/jira/browse/CAMEL-10340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15535604#comment-15535604
 ] 

Yi Yan commented on CAMEL-10340:
--------------------------------

What about to change the behavior like this? When deleteAfterRead is set to 
true, it will always remove message, and the deleteIfFiltered with true value 
will only work that the route must has a filter, and the message passed through 
the filter. I have test by this modification, it works as expected.

{code}
    private boolean shouldDelete(Exchange exchange) {
        boolean shouldDeleteByFilter = 
exchange.getProperty(Exchange.FILTER_MATCHED) != null
                && getConfiguration().isDeleteIfFiltered()
                && passedThroughFilter(exchange);
        return getConfiguration().isDeleteAfterRead()
                || shouldDeleteByFilter;
    }
{code}

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

Reply via email to