I am not sure of the different between org.jboss.resource.adapter.jms.JmsMessageConsumer and org.jboss.mq.SpiMessageConsumer. (similarly JmsSession vs SpiSession)
Is there any doc that explain when to use what?
The reason why I am asking this question is: Using JmsSession/jmsMessageConsumer creates a seperate thread to listen to the queue where as SpiSession/SpiMessageConsumer won't create extra thread but the same thread is registered as a listener for multiple calls to setMessageListener method.
The docs will only explain external interfaces for users, and wouldn't mention the specific implementation details, which you are asking about.
Just a guess (since it's been some time), one is used for MDB and the other for message listeners using the plain JMS api. Or I could be mistaken...