When the JVMs GC takes a long time, the UIMA AS fails to validate the broker connection and proceeds to close it as if the broker died. It seems that the long GC freezes the jvm and prevents the low level socket pinging to work correctly. This pinging is a mechanism by which the low level AMQ code relies upon to detect a broker failure. In this case, the broker is actually fine. The side effect of the above is that the UIMA AS service falsely adds the client to the DoNotProcess list. This is an optimization that was recently added that prevents wasting processing cycles while handling CASes that are known to have come from clients that had gone away. Each CAS origin is checked against that list and if there is a match the CAS is thrown away. It seems that we need a better mechanism to detect broker failure.