RabbitMQ(AMQP)与ActiveMQ(JMS)的比较

RabbitMQ相对于ActiveMQ有以下几点优势:(来源:《spring实战第四版》)

1. AMQP为消息定义了线路层(wire level protocol)的协议,而JMS所定义的是API规范。JMS的API规范能够确保所有的实现都能通过通用的API来使用,但是并不能保证某个JMS实现所发送的消息能够被另外不同的JMS实现所使用。而AMQP的线路层协议规范了消息的格式,消息在生产者和消费者间传送的时候会遵循这个格式。这样AMQP在互相协作方面就要优于JMS——它不仅能跨不同的AMQP实现,还能跨语言和平台。

即JMS还是要求生产者和消费者都是java程序,实现了JMS的API协议。而AMQP则没有此限制。

2. AMQP另外一个明显的优势在于它具有更加灵活和透明的消息模型。使用JMS的话,只有两种消息模型可供选择:点对点和发布-订阅。这两种模型在AMQP当然都是可以实现的,但AMQP还能够让我们以其他的多种方式来发送消息,这是通过将消息的生产者与存放消息的队列解耦实现的。而JMS并没有实现生产者和队列/主题的解耦。

你可能感兴趣的:(activemq,rabbitmq)