本文共 1172 字,大约阅读时间需要 3 分钟。
RabbitMQ是一个消息代理:它接受和转发消息。你可以把它想象成一个邮局:当你把你想要发布的邮件放在邮箱中时,你可以确定邮差先生最终将邮件发送给你的收件人。在这个比喻中,RabbitMQ是邮政信箱,邮局和邮递员。
RabbitMQ和邮局的主要区别在于它不处理纸张,而是接受,存储和转发二进制数据块 - 消息。
RabbitMQ消息传递使用了一些术语,他们分别是:
消息生产者(Producer)
一个发送消息的程序,主要是发送消息。 消息队列(Queue) 队列是生活在RabbitMQ中的邮箱的名称。尽管消息流经RabbitMQ和您的应用程序,但它们只能存储在队列中。一个队列只受主机内存和磁盘限制的约束,它本质上是一个很大的消息缓冲区。许多生产者可以发送进入一个队列的消息,并且许多消费者可以尝试从一个队列接收数据。这就是我们代表队列的方式: 消息生产者(Consumer) 一个消费者是一个程序,主要是等待接收消息。基础结构图:
broker:代理人,简单来说就是消息队列服务器实体。 exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。 queue:消息队列载体,每个消息都会被投入到一个或多个队列。 binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。 routing key:路由关键字,exchange根据这个关键字进行消息投递。 vhost:虚拟空间,一个broker里可以开设多个vhost,用作不同用户的权限分离。 producer:消息生产者,就是投递消息的程序。 consumer:消息消费者,就是接受消息的程序。 channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。交换机的主要作用是接收相应的消息并且绑定到指定的队列。交换机总共有四种类型,它们分别为:
Direct是RabbitMQ默认的交换机模式,也是最简单的模式.即创建消息队列的时候,指定一个BindingKey.当发送者发送消息的时候,指定对应的Key.当Key和消息队列的BindingKey一致的时候,消息将会被发送到该消息队列中.
Topic
转发信息主要是依据通配符,队列和交换机的绑定主要是依据一种模式(通配符+字符串),而当发送消息的时候,只有指定的Key和该模式相匹配的时候,消息才会被发送到该消息队列中.
Headers也是根据一个规则进行匹配,在消息队列和交换机绑定的时候会指定一组键值对规则,而发送消息的时候也会指定一组键值对规则,当两组键值对规则相匹配的时候,消息会被发送到匹配的消息队列中.
Fanout是路由广播的形式,将会把消息发给绑定它的全部队列,即便设置了key,也会被忽略.
转载地址:http://ndugn.baihongyu.com/