Are you sure whatever's moving them (presumably an app server or Java construct) is committing them? Uncommitted messages show in the count but can't be retrieved by normal methods.
I have following problem. I have two queues: "testq" and "dead.letter.queue". Second queue is used as a backout requeue queue for "testq". When some error occur ...