I'm using JBoss 3.0.8.
What is really annoying is that all those undelivered messages (tens of thousands in my app) which have to expire and just silently disappear, still are sitting there, causing eventual OutOfMemory errors (using file persistence), and slow down the whole thing.
3.0.x only checks the expiration at delivery to the client.
The latest 3.2.x includes a reaper thread on the server.
If you have your cache memory configuration set up correctly, then you probably won't get out of memory errors.
In any case I suggest you use 3.2 if possible, since in 3.2 they will expire in the background.