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