消息中间件系列小记---1.初探RabbitMQ

概念

什么是rabbitmq?

RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,主要是为了实现系统之间的双向解耦。用人话来说,就是发消息和接收消息

要它有什么卵用?

能够降低系统之间的耦合,并且在分布式领域中转发存储消息,可作为一个中间存储介质,角色类似于CPU的L2缓存

业界中各种消息队列有什么区别?

详见此处


名词解析

  • Virtual Host:

    包含若干个Exchange和Queue,表示一个节点;Vhost之间相互完全隔离,不同Vhost之间无法共享Exchange和Queue。因此Vhost之间数据无法共享和分享。如果要实现这种功能,需要Vhost之间手动构建对应代码逻辑

  • **Exchange(交换机): **

    接受客户端发送的消息,并根据Binding将消息路由给服务器中的队列,只做交换消息,存储功能交由queue实现,Exchange分为direct, fanout, topic三种。

    • direct:转发消息到routigKey指定的队列
    • topic:按规则转发消息(最灵活)
    • headers:(这个还没有接触到)
    • fanout:转发消息到所有绑定队列

    Exchange的绑定功能,可以绑定queue,也可以绑定Exchange。这个看具体业务了。
    如果绑定数据,需要在分发或者重新被分派,使用To Exchange绑定。如果要被直接处理,使用queue绑定。
    如果Exchange绑定了Queue,如果Route Key不对,也会导致数据不可达,被丢掉。(一个数据可以被Queue处理,需要Exchange绑定Queue,并且在Message发送的时候,Route Key 与绑定的Key相等。)

  • Binding: 连接Exchange和Queue,包含路由规则。

  • Queue: 消息队列,存储还未被消费的消息。

队列的属性:

  • 持久性:如果启用,队列将会在server重启前都有效。
  • 自动删除:如果启用,那么队列将会在所有的消费者停止使用之后自动删除掉自身。
  • 惰性:如果没有声明队列,那么在执行到使用的时候会导致异常,并不会主动声明。
  • 排他性:如果启用,队列只能被声明它的消费者使用。
  • Message: Header+Body
  • Channel: 通道,执行AMQP的命令;一个连接可创建多个通道以节省资源。

搭建RabbitMQ服务

  • 在win7下搭建

Paste_Image.png

先去rabbitMQ官方网站,安装 Erlang,然后安装rabbitmq-server,相比于linux,windows下就是傻瓜化,安装完毕后,直接启动rabbitmq-server服务,即可
Paste_Image.png

然后在浏览器访问:http://127.0.0.1:15672/ 即可访问rabbitmq的Web管理界面,linux下需要手动安装,详见下方

  • 在ubuntu下搭建

点我看这位仁兄博客

本节主要简要总结rabbitmq的入门知识与概念

好文推荐

[RabbitMQ学习之:(一)初识、概念及心得]


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 来源 RabbitMQ是用Erlang实现的一个高并发高可靠AMQP消息队列服务器。支持消息的持久化、事务、拥塞控...
    jiangmo阅读 13,508评论 2 34
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,308评论 19 139
  • 关于消息队列,从前年开始断断续续看了些资料,想写很久了,但一直没腾出空,近来分别碰到几个朋友聊这块的技术选型,是时...
    预流阅读 585,818评论 51 787
  • 1. 历史 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的...
    高广超阅读 11,272评论 3 51
  • 什么叫消息队列 消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂...
    lijun_m阅读 5,145评论 0 1