RabbitMQ之基本概念

AMQP

AMQP,即Advanced Message Queuing Protocol,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。目标是实现一种在全行业广泛使用的标准消息中间件技术,以便降低企业和系统集成的开销,并且向大众提供工业级的集成服务。主要实现有 RabbitMQ。

基本概念

  • 生产者

消息的创建者,负责将消息发送到RabbitMQ。

  • 消费者

消息者需要连接到RabbitMQ,并且订阅到队列上,进行消息的接收。包括持续订阅(basicConsumer)和单条订阅(basicGet).

  • 消息

消息包含两部分内容有效负荷(payload)和标签(label)。有效负荷就是传输的数据,标签就是路由键。

  • 信道

信道是建立在TCP连接上的一个虚拟连接,虚拟连接相当于在多线程环境下,每个线程都共享一个TCP连接,一个线程对应着一个信道。

在RabbitMQ中,每个信道都有自己唯一的ID,保证了信道的私有性。

为什么不建立多个TCP连接呢?

原因是RabbitMQ为了保证性能。如果为每个线程创建一个TCP连接,每秒成百上千的连接建立和销毁会严重消耗系统的性能。所以RabbitMQ选择建立多个信道,而不是建立多个TCP连接。

  • 交换器、队列、绑定、路由键

队列通过路由键(routing  key,某种确定的规则)绑定到交换器,生产者将消息发布到交换器,交换器根据绑定的路由键将消息路由到特定队列,然后由订阅这个队列的消费者进行接收。

虚拟主机

虚拟消息服务器(vhost),是一个mini版的RabbitMQ,将RabbitMQ做了逻辑分离。每个vhost有自己的交换器和队列,避免了队列和交换器的命名冲突。而最重要的是具有权限控制机制。vhost在客户端连接时,必须指定,缺省的vhost为 “/” ,可以通过用户和口令guest进行访问。

什么情况下使用虚拟主机?

例如,公司内部搭建了一个RabbitMQ集群服务。由于我们需要开发环境、测试环境和演示环境,由于公司分配的服务器数量有限,我们不可能为每个环境都搭建一个集群服务,所以可以为每个环境创建一个虚拟主机。从而达到了环境隔离的目的。

总结

最后用一张图来说明生产者、消费者、信道、交换器、队列、虚拟主机之间的关系。 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值