In this scenario UIMA AS aggregate thread receives a msg from a service queue, desarializes a CAS, fetches the next step from the FC, and deliveres the CAS to a delegate's queue. Once the CAS is delivered to the delegate's queue, the receiving thread is done and proceeds to fetch another msg from a service queue. This is wrong and totaly breaks prefetch=0 idea and effects load balancing if there are multiple instances of UIMA AS aggregate. The receiving thread should not fetch another msg while the previous CAS is still in-play. The code should block the receiving thread after a CAS is delivered to a delegate's queue until the CAS is fully processed.