How does RabbitMQ fit into J2EE stack ? As implementation is in Erlang i guess, what are some of the points where RabbitMQ excels over other J2EE messaing products like ActiveMQ/hornetQ etc?
The fact that RabbitMQ is implemented in Erlang is anecdotal (yes, there are very good reasons why it is written in Erlang as we explain in Chapter 1), but basically what you do care about as a RabbitMQ user is how to interact from your current tech stack with RabbitMQ.
I say official because for many other languages there are community maintained RabbitMQ clients (i.e. AMQP clients).
So for Java and .Net particularly you have AMQP Clients developed by the RabbitMQ developers.
To compare ActiveMQ vs. HorentQ you will have to go to very specific use cases, and with messaging is quite difficult to write proper scientific benchmarks
What you do have in RabbitMQ is a very big community in case you need help. Why? Because by using AMQP RabbitMQ embraces many languages: Java, .Net, Python, Ruby, PHP, etc., etc. So you have people from very different "walks of life" stressing the product to their very particular needs which enriches the ecosystem. So you have people doing simple image scaling with Ruby, or companies like Joyent that monitor their clouds with RabbitMQ, to financial institutions and betting systems using RabbitMQ as well. For example today I learnt that Chef, the system integrations framework, uses RabbitMQ for their servers.