您的位置:首页 > 其它

RabbitMQ实战(一)-消息通信基本概念

2019-01-13 12:35 417 查看

2019年才刚刚开始,给自己定一些新的学习目标,那么先从RabbitMQ开始吧。买了一本《RabbitMQ实战-高效部署分布式消息队列》电子书进行研究,那么在学习RabbitMQ之前,我们先要理解消息通信的基本概念,主要从一下几点开始学习:
生产者:RabbitMQ在应用程序和服务器之间扮演路由器的角色,那么RabbitMQ就需要去接收消息,从哪接收呢?当然是生产者。生产者(producer)创建消息,然后发布到代理服务器RabbitMQ上,然后RabbitMQ会将消息发给感兴趣到接收方。
消费者:消费者就很容易理解了,他们链接在代理服务器RabbitMQ上,并订阅到队列(queue)上,消息队列就像是一个邮箱一样,当消息到达特定的邮箱上,消费者就会从中拿到邮箱,予以消费。下图为生产者到消费者到信息流

队列:就像上面提到的那样,队列就像是一个邮箱,消息就是到达这个“邮箱”后被等待消费的。队列的工作原理如下:

消息的投递方式为:1)消息M到达队列Q,2)RabbitMQ把消息M发送给消费者C,3)消费者C确认收到收到消息M,4)RabbitMQ才会将消息M在队列Q中删除掉。
交换器:当你想要将消息投递给队列时,你是通过把消息发送给交换器来完成的。然后根据特定的规则,RabbitMQ将会决定将消息该投递给那个队列,这个规则被称为路由键,队列通过路由键绑定到交换器。常用到交换器有4中类型:分别是Direct exchange、Fanout exchange、Topic exchange、Headers exchange,主要用到到为前3种。
Direct Exchange:直连型交换机(direct exchange)是根据消息携带的路由键(routing key)将消息投递给对应队列的。步骤如下:1.将一个队列绑定到某个交换机上,同时赋予该绑定一个路由键(routing key)2.当一个携带着路由值为R的消息被发送给直连交换机时,交换机会把它路由给绑定值同样为R的队列。

扇型交换机(funout exchange)将消息路由给绑定到它身上的所有队列。不同于直连交换机,路由键在此类型上不启任务作用。如果N个队列绑定到某个扇型交换机上,当有消息发送给此扇型交换机时,交换机会将消息的发送给这所有的N个队列。

主题交换机(topic exchanges)中,队列通过路由键绑定到交换机上,然后,交换机根据消息里的路由值,将消息路由给一个或多个绑定队列。
扇型交换机和主题交换机异同:
对于扇型交换机路由键是没有意义的,只要有消息,它都发送到它绑定的所有队列上
对于主题交换机,路由规则由路由键决定,只有满足路由键的规则,消息才可以路由到对应的队列上

绑定:则是将交换器和队列进行到绑定。
虚拟主机:每一个RabbitMQ服务器都能创建虚拟消息服务器,拥有自己的队列、绑定和交换机,更重要的是,他拥有自己的权限控制。RabbitMQ包含了开箱即用的默认的vhost:“/”。
最后给出整个RabbitMQ的消息流转图,如下图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: