If you've already used JMS, then you're aware that it has queues and topics. AMQP has queues as well but the semantics are different.
Each message sent by a JMS-based producer is consumed by just one of the clients of that queue. AMQP-based producers don't publish directly to queues but to exchanges instead. When queues are declared, they must be bound to an exchange. Multiple queues can be bound to the same exchange, emulating the concept of topics.
JMS has message selectors which allow consumers to be selective about the messages they receive from either queues or topics. AMQP has routing keys that behave differently based on the type of the exchange, as listed next.
A direct exchange routes messages based on a fixed routing ...