We have a JMS (hornetq) instance with many queues, for one we have a strict max pool with only one Listener instance (process cannot be run in parallel)
<strict-max-pool name="mdb-strict-single-instance-pool-md"
max-pool-size="1" instance-acquisition-timeout="600"
instance-acquisition-timeout-unit="MINUTES" />
As far as I understand the instance-acquisition-timeout
option define the time a process will wait on retrieving a consumer bean for an available one.
The guy who configured the pool said me he put a so high value to avoid to loose the message in the queue in case of unique consumer being busy for a too long time.
My questions are :
- Is the JMS message really removed from the queue when the consumer acquisition fails ((Failed to acquire a permit within...). If yes what does it become (moved to dead letter queue, just deleted, etc...) ?
- Is there a risk of thread contention with such a high timeout value (what happen if 50 message are posted while the consumer bean is still processing the current one) ?