AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
要学习RabbitMQ最靠谱的地方当然是他的官网:https://www.rabbitmq.com/,其他地方难免有解读误差。所以学习的时候可以看看官网上的内容。
首先队列有几个概念要清楚
他支持六种队列模式
一个生产者一个消费者
生产则发送消息,消费者拿到消息,这个过程就结束了。
一个生产者多个消费者
生产则发送一条消息,只能被一个消费者拿到。
如果生产者发送多条消息,消费者拿到的消息是不会重复的。
和work模式类似,一个生产者多个消费者,但是中间多了个交换机(exchange),一条消息可以被多个消费者获取。
生产者将消息发给交换机,交换机把消息分配给“已绑定”的消费者,前提是消费者和交换机绑定。
和订阅模式类似,同样是一个生产者多个消费者,中间多了个交换机(exchange),一条消息可以被多个消费者获取。但是他在传递消息的时候多设置了一个key,消费者拿消息的时候也设置一个或多个key,key匹配才能拿消息。
例如:一号消费者设置的是insert,二号消费者设置的key是insert和update。假如生产者发送了一个key为insert的时候,2个消费者都能拿到数据。如果生产者发送了一个key为update,那么这时候只有2号消费者能拿到数据。
###五、通配符(话题)模式(Topics)
和路由模式类似,同样是一个生产者多个消费者,中间多了个交换机(exchange),一条消息可以被多个消费者获取。同样是传key,但是他的key是可以模糊匹配的,*匹配一个单词,#匹配0或者多个单词。
例如:一号消费者设置的是item.#,二号消费者设置的key是item.*。一号消费者可以获取所有item开头的消息,二 号就只能匹配item.后面加一个词的消息。例如:消息是item.insert他可以获取,但是item.insert.update他就不能获取了。
暂时不做介绍
本文为林明潭原创文章,转载无需和我联系,但请注明来自林明潭的博客blog.umaske.com
最新评论