[ 
https://issues.apache.org/jira/browse/CAMEL-8308?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Daniel Neugebauer updated CAMEL-8308:
-------------------------------------
    Description: 
If RabbitMQEndpoint is configured with either prefetchEnabled=false or 
prefetchCount=0 (both are default values), then messages appear to be locked on 
server-side (getting prefetched with high/no limit?).

To reproduce:

# add multiple messages to a RabbitMQ queue which define an expiration header 
(after expiration, RabbitMQ will remove those message from queue without 
delivering them to consumers)
# watch RabbitMQ admin panel, you should see n messages are "Ready", 0 messages 
are "Unacknowledged"
# configure & run one concurrent RabbitMQEndpoint from Camel with above 
settings + autoAck=false and delay/block processing of messages (e.g. by 
running Thread.wait(10000) in a Processor)
# watch the admin panel again: 0 messages are "Ready", n messages are 
"Unacknowledged" - so Camel appears to have prefetched all messages?
# wait until messages should have expired
# admin panel still shows all unprocessed messages as unacknowledged although 
they should have been removed from queue
# Camel still processes those messages after expiration
# stop Camel (returns all unacknowledged messages to ready state)
# admin panel shows that all messages now have been purged from queue (much 
later than they should have)

Workaround: Repeating with prefetchEnabled=true and prefetchCount=1 shows only 
1 message "unacknowledged" while queue is being processed by Camel, all other 
messages remain "ready" and expire in time (thus skipping the Camel queue as 
expected).

Expected behaviour: If the prefetcher is disabled, no messages should get 
locked on server-side, so messages can be expired by RabbitMQ as intended by 
the message sender.

  was:
If RabbitMQEndpoint is configured with either prefetchEnabled=false or 
prefetchCount=0 (both are default values), then messages appear to be locked on 
server-side (getting prefetched with high/no limit?).

To reproduce:

# add multiple messages to a RabbitMQ queue which define an expiration header 
(after expiration, RabbitMQ will remove those message from queue without 
delivering them to consumers)
# watch RabbitMQ admin panel, you should see n messages are "Ready", 0 messages 
are "Unacknowledged"
# configure & run one concurrent RabbitMQEndpoint from Camel with above 
settings and delay/block processing of messages (e.g. by running 
Thread.wait(10000) in a Processor)
# watch the admin panel again: 0 messages are "Ready", n messages are 
"Unacknowledged" - so Camel appears to have prefetched all messages?
# wait until messages should have expired
# admin panel still shows all unprocessed messages as unacknowledged although 
they should have been removed from queue
# Camel still processes those messages after expiration
# stop Camel (returns all unacknowledged messages to ready state)
# admin panel shows that all messages now have been purged from queue (much 
later than they should have)

Workaround: Repeating with prefetchEnabled=true and prefetchCount=1 shows only 
1 message "unacknowledged" while queue is being processed by Camel, all other 
messages remain "ready" and expire in time (thus skipping the Camel queue as 
expected).

Expected behaviour: If the prefetcher is disabled, no messages should get 
locked on server-side, so messages can be expired by RabbitMQ as intended by 
the message sender.


> RabbitMQEndpoint: setting prefetchEnabled=false or prefetchCount=0 (default 
> values) locks all messages on RabbitMQ
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-8308
>                 URL: https://issues.apache.org/jira/browse/CAMEL-8308
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-rabbitmq
>    Affects Versions: 2.14.1
>            Reporter: Daniel Neugebauer
>
> If RabbitMQEndpoint is configured with either prefetchEnabled=false or 
> prefetchCount=0 (both are default values), then messages appear to be locked 
> on server-side (getting prefetched with high/no limit?).
> To reproduce:
> # add multiple messages to a RabbitMQ queue which define an expiration header 
> (after expiration, RabbitMQ will remove those message from queue without 
> delivering them to consumers)
> # watch RabbitMQ admin panel, you should see n messages are "Ready", 0 
> messages are "Unacknowledged"
> # configure & run one concurrent RabbitMQEndpoint from Camel with above 
> settings + autoAck=false and delay/block processing of messages (e.g. by 
> running Thread.wait(10000) in a Processor)
> # watch the admin panel again: 0 messages are "Ready", n messages are 
> "Unacknowledged" - so Camel appears to have prefetched all messages?
> # wait until messages should have expired
> # admin panel still shows all unprocessed messages as unacknowledged although 
> they should have been removed from queue
> # Camel still processes those messages after expiration
> # stop Camel (returns all unacknowledged messages to ready state)
> # admin panel shows that all messages now have been purged from queue (much 
> later than they should have)
> Workaround: Repeating with prefetchEnabled=true and prefetchCount=1 shows 
> only 1 message "unacknowledged" while queue is being processed by Camel, all 
> other messages remain "ready" and expire in time (thus skipping the Camel 
> queue as expected).
> Expected behaviour: If the prefetcher is disabled, no messages should get 
> locked on server-side, so messages can be expired by RabbitMQ as intended by 
> the message sender.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to