Ok I'm pretty sure this particular problem is with the ruby stomp client. After writing a simple stomp server in ruby last night I found out that the ruby client will not read the end of frame null character unless it's followed by a newline, which probably accounts for some of the behavior I'm seeing with activemq.
There is still the issue of activemq not unregistering consumers after they have disconnected, but hopefully that's actually the only real bug in activemq itself. I'll confirm the above after I get some time to test it.
