ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

RabbitMQ二三事

2019-03-28 22:56:39  阅读:233  来源: 互联网

标签:exchange 队列 RabbitMQ 投递 消息 二三 路由


RabbitMQ二三事


RabbitMQ概览

RabbitMQ是一个高性能的分布式消息中间件。它由Erlang编写,这种语言天生支持分布式,而且性能极高(但是比较难上手)。

通信概念

RabbitMQ简单理解就是一个队列服务,我们的生产者不断地往它投递消息,而消费者不断地从它那里获取消息。但相较于利用redis的List这类简单队列,RabbitMQ的消息投递更灵活一点。首先需要知道一些RabbitMQ中的通信概念:

  • exchange(交换器)

  • queue(队列):消息队列载体,每个消息都会被投入到一个或多个队列。

  • binding(绑定):它的作用就是把exchange和queue按照路由规则绑定起来。

  • routing key(路由关键字):exchange根据这个关键字进行消息投递。

  • vhost(虚拟主机):不同的vhost下,数据完全隔离,默认vhost为“/”

  • channel(信道):在一个tcp连接下,可建立多个channel,每个channel代表一个会话任务。

  • producer(生产者)

  • consumer(消费者)

RabbitMQ中Exchange类似于一个路由器,我们的consumer并不会把消息直接投递给队列,而是投递给exchange,exchange根据我们投递时的路由键(routing key)再发送到特定的队列。这样的设计让消息可以灵活选路,发送到某一类的队列中,形成一对多的关系,而不仅仅是一对一。

Exchange

所以说RabbitMQ中的exchange很方便,很强大,它有这样几种类型:

  • direct

  • fanout

  • topic

  • headers(几乎用不到)

direct交换器很简单,有时候我们仅仅需要一个很简单的队列(消息投递到其中,然后不断消费它),这时候我们就可以用direct交换器,它的规则是:如果路由键匹配,消息就会被投递到对应的队列。

RabbitMQ二三事


fanout交换器忽略路由键,把消息同时发到一批队列。

RabbitMQ二三事


topic则就是根据不同路由键,把消息发送到某一类队列中。

RabbitMQ二三事

QQ图片20190324200442.png


获取以上Java高级架构最新视频,欢迎


加入Java进阶架构交流群:142019080。直接点击链接加群。https://jq.qq.com/?_wv=1027&k=5lXBNZ7


标签:exchange,队列,RabbitMQ,投递,消息,二三,路由
来源: https://blog.51cto.com/14208225/2370934

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有