Enrico,
you are missing an important point. The producers and receivers
exchange messages asynchronously. A producer does not have to block until his receiver gets the messge and acknowledges it. In this sense JMS is asynch.
Specific ways of receiving messages - listeners or blocking calls to queues -- are not that important.
Think of it this way. When you make a phone call you either connect or you dont, in either case you know the outcome of your call. When you send a letter you really don't know whether the receipient ever gets it, you just drop it and go by your business. The receiver may seat by his mail box (blocking call) and wait for the letter doing nothing else or 'monitor' box's status periodically (listener). In either case the mail is still asynchronous.
Here's a great example of asynchronous message that failed to be delivered. A guy gets a parking ticket, sends his payment, the city never receives the check, the city suspends his driver license, at some point later somebody rearends HIM, police comes, police runs his license -- it comes back suspended, the guy spends a night in jail. Real story.