RabbitMQ简介
来源:互联网 发布:淘宝网页编辑 编辑:程序博客网 时间:2024/06/07 13:34
RabbitMQ是一个在AMQP协议标准基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。采用 Erlang 实现的工业级的消息队列(MQ)服务器。
官网 https://www.rabbitmq.com/
中文文档 http://rabbitmq.mr-ping.com/
虚拟主机:
一个虚拟主机持有一组交换机、队列和绑定。
为什么需要多个虚拟主机呢?因为RabbitMQ当中,用户只能在虚拟主机的粒度进行权限控制。因此,如果需要禁止A组访问B组的交换机/队列/绑定,必须为A和B分别创建一个虚拟主机。每一个RabbitMQ服务器都有一个默认的虚拟主机。
队列:
队列(Queues)是你的消息(messages)的终点,可以理解成装消息的容器。消息就一直在里面,直到有客户端(也就是消费者,Consumer)连接到这个队列并且将其取走为止。不过,也可以将一个队列配置成这样的:一旦消息进入这个队列,此消息就被删除。
多个生产者(producers)能够把消息发送给同一个队列,同样,多个消费者(consumers)也能够从同一个队列(queue)中获取数据。(多个消费者绑定在一个队列上可以实现生产者-消费者模式,注意其中的公平调度)
队列是由消费者(Consumer)通过程序建立的,不是通过配置文件或者命令行工具。这没什么问题,如果一个消费者试图创建一个已经存在的队列,RabbitMQ会直接忽略这个请求。因此我们可以将消息队列的配置写在应用程序的代码里面。而要把一个消息放进队列前,需要有一个交换机(Exchange)。
交换机(Exchange):
交换机是用来发送消息的AMQP实体,可以理解成具有路由表的路由程序,常被比喻为邮局。每个消息都有一个称为路由键(routing key)的属性,就是一个简单的字符串。交换机当中有一系列的绑定(binding),即路由规则(routes)。(例如,指明具有路由键 “X” 的消息要到名为timbuku的队列当中去。)
消费者程序(Consumer)要负责创建你的交换机。交换机可以存在多个,每个交换机在自己独立的进程当中执行,因此增加多个交换机就是增加多个进程,可以充分利用服务器上的CPU核以便达到更高的效率。例如,在一个8核的服务器上,可以创建5个交换机来用5个核,另外3个核留下来做消息处理。类似的,在RabbitMQ的集群当中,你可以用类似的思路来扩展交换机一边获取更高的吞吐量。
绑定(binding):
交换机如何判断要把消息送到哪个队列?你需要路由规则,即绑定(binding)。换句话说,一个绑定就是一个基于路由键将交换机和队列连接起来的路由规则。例如,具有路由键“warning”的消息需要被送到两个队列,“log-info”和“log-warning”。要做到这个,就需要创建两个绑定,每个都连接一个交换机和一个队列,两者都可由“warning”路由键触发。在这种情况下,交换机会复制一份消息并且把它们分别发送到两个队列当中。交换机不过就是一个由绑定构成的路由表。
关于交换机类型:
交换机有多种类型。他们都是做路由的,但是它们接受不同类型的绑定。为什么不创建一种交换机来处理所有类型的路由规则呢?因为每种规则用来做匹配分子的CPU开销是不同的。
1)扇型交换机(fanout):它把消息发送给它所知道的所有队列,用来处理消息的广播路由。
1 * (星号) 用来表示一个单词.
官网 https://www.rabbitmq.com/
中文文档 http://rabbitmq.mr-ping.com/
AMQP(高级消息队列协议) 是一个异步消息传递所使用的应用层协议规范,作为线路层协议,而不是API(例如JMS),AMQP 客户端能够无视消息的来源任意发送和接受信息。AMQP的原始用途只是为金融界提供一个可以彼此协作的消息协议,而现在的目标则是为通用消息队列架构提供通用构建工具。
虚拟主机:
一个虚拟主机持有一组交换机、队列和绑定。
为什么需要多个虚拟主机呢?因为RabbitMQ当中,用户只能在虚拟主机的粒度进行权限控制。因此,如果需要禁止A组访问B组的交换机/队列/绑定,必须为A和B分别创建一个虚拟主机。每一个RabbitMQ服务器都有一个默认的虚拟主机。
队列:
队列(Queues)是你的消息(messages)的终点,可以理解成装消息的容器。消息就一直在里面,直到有客户端(也就是消费者,Consumer)连接到这个队列并且将其取走为止。不过,也可以将一个队列配置成这样的:一旦消息进入这个队列,此消息就被删除。
多个生产者(producers)能够把消息发送给同一个队列,同样,多个消费者(consumers)也能够从同一个队列(queue)中获取数据。(多个消费者绑定在一个队列上可以实现生产者-消费者模式,注意其中的公平调度)
队列是由消费者(Consumer)通过程序建立的,不是通过配置文件或者命令行工具。这没什么问题,如果一个消费者试图创建一个已经存在的队列,RabbitMQ会直接忽略这个请求。因此我们可以将消息队列的配置写在应用程序的代码里面。而要把一个消息放进队列前,需要有一个交换机(Exchange)。
交换机(Exchange):
交换机是用来发送消息的AMQP实体,可以理解成具有路由表的路由程序,常被比喻为邮局。每个消息都有一个称为路由键(routing key)的属性,就是一个简单的字符串。交换机当中有一系列的绑定(binding),即路由规则(routes)。(例如,指明具有路由键 “X” 的消息要到名为timbuku的队列当中去。)
消费者程序(Consumer)要负责创建你的交换机。交换机可以存在多个,每个交换机在自己独立的进程当中执行,因此增加多个交换机就是增加多个进程,可以充分利用服务器上的CPU核以便达到更高的效率。例如,在一个8核的服务器上,可以创建5个交换机来用5个核,另外3个核留下来做消息处理。类似的,在RabbitMQ的集群当中,你可以用类似的思路来扩展交换机一边获取更高的吞吐量。
绑定(binding):
交换机如何判断要把消息送到哪个队列?你需要路由规则,即绑定(binding)。换句话说,一个绑定就是一个基于路由键将交换机和队列连接起来的路由规则。例如,具有路由键“warning”的消息需要被送到两个队列,“log-info”和“log-warning”。要做到这个,就需要创建两个绑定,每个都连接一个交换机和一个队列,两者都可由“warning”路由键触发。在这种情况下,交换机会复制一份消息并且把它们分别发送到两个队列当中。交换机不过就是一个由绑定构成的路由表。
关于交换机类型:
交换机有多种类型。他们都是做路由的,但是它们接受不同类型的绑定。为什么不创建一种交换机来处理所有类型的路由规则呢?因为每种规则用来做匹配分子的CPU开销是不同的。
1)扇型交换机(fanout):它把消息发送给它所知道的所有队列,用来处理消息的广播路由。
2)直连交换机(direct):交换机将会对绑定键(binding key)和路由键(routing key)进行精确匹配,从而确定消息该分发到哪个队列。多个队列使用相同的绑定键是合法的。默认交换机(default exchange)实际上是一个由消息代理预先声明好的没有名字(名字为空字符串)的直连交换机(direct exchange)。它有一个特殊的属性使得它对于简单应用特别有用处:那就是每个新建队列(queue)都会自动绑定到默认交换机上,绑定的路由键(routing key)名称与队列名称相同。
1 * (星号) 用来表示一个单词.
2 # (井号) 用来表示任意数量(零个或多个)单词。
0 0
- RabbitMQ简介
- RabbitMQ简介
- RabbitMQ简介
- RabbitMQ简介
- RabbitMQ简介
- rabbitMQ简介
- RabbitMQ简介
- RabbitMQ简介
- rabbitmq 简介
- rabbitmq简介
- (一) RabbitMQ简介
- Spring整合RabbitMQ简介
- RabbitMQ简介和使用
- RabbitMQ php 一 简介
- RabbitMQ简介和使用
- RabbitMQ--整体简介
- RabbitMQ Tutorials简介
- RabbitMQ基本概念简介
- zstuoj 4243 牛吃草
- JMeter学习-007-JMeter 断言实例之一 - 响应断言
- Small框架类加载实现
- dijkstra最短路算法
- JAVA tutorial官方案例:学习笔记
- RabbitMQ简介
- 实现双向固定表头的表格
- iOS 获取手机的ip地址
- 最新stm32 USB库获取
- Angular(七)_服务Service,
- AR遮挡研究
- Android layout布局属性、标签属性总结大全。
- 润乾报表关于当输入条件为空取出所有数据的几种用法
- APDU命令