Support Article
Agents Delayed and Stopped due to ProcessConnectQueue Agent
Summary
Running on JBoss see whenever ProcessConnectQueue agent has been running long other agents like SLA, system pulse, etc. are stopped/delayed waiting for ProcessConnectQueue to finish. Even though the other agents next start time has come and gone they do not run until ProcessConnectQueue finishes.
Error Messages
There are not any error messages but can see long delays.
2017-07-24 15:33:58,422 [-threads-1671744058)] [ STANDARD] [ ] [ CPAS:01.07.01] ( internal.async.AgentQueue) DEBUG - System-Queue-ExecutionRequest-Connect-Default.ProcessQueue executed for: 5013981ms.
2017-07-24 15:33:58,442 [-threads-1671744058)] [ STANDARD] [ ] [ CPAS:01.07.01] ( internal.async.AgentQueue) DEBUG - Pega-ProCom #0 was delayed for: 4920353ms.
Steps to Reproduce
Not able to consistently reproduce the issue. Issue is random, when there are large volume of items queued for ProcessConnectQueue agents.
Root Cause
A defect or configuration issue in the operating environment. This is a known issue with JBoss's hornetq.
This temporary blocks incoming message consumption; because each MDB consumer thread needs to complete buffered messages at first, before processing any new ones. To resolve this, please accommodate following changes to resolve this issue by reducing consumer buffer size and tweaking message redelivery.
To allow slow consumers, set the consumer-window-size to 0 (for no buffer at all). This will prevent the slow consumer from buffering any messages on the client side. Messages will remain on the server side ready to be consumed by other consumers.
Setting this to 0 can give deterministic distribution between multiple consumers on a queue.
Resolution
Make the following change to the operating environment:
- Modify standalone-full.xml
- Set the consumer-window-size to 0 and there are no longer any delays in the agent processing.
E.g
<pooled-connection-factory name="hornetq-ra"> <transaction mode="xa"/> <connectors> <connector-ref connector-name="in-vm"/> </connectors> <entries> <entry name="java:/JmsXA"/> </entries> <consumer-window-size>0</consumer-window-size>0</pooled-connection-factory>
Another option is to switch to ActiveMQ.
Published August 26, 2017 - Updated October 8, 2020
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.