zoukankan      html  css  js  c++  java
  • RabbitMQ 基本概念和使用

    当前各种应用大量使用异步消息模型,并随之产生众多消息中间件产品及协议,标准的不一致使应用与中间件之间的耦合限制产品的选择,并增加维护成本。AMQP是一个提供统一消息服务的应用层标准协议,基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。 

    RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现都不错。

    RabbitMQ Server: 也叫broker server,是一种传输服务,他的角色就是维护一条从Producer到Consumer的路线,保证数据能够按照指定的方式进行传输。

    Producer,数据的发送方。生产数据并发送到broker server。

    Consumer,数据的接收方。

    Exchanges, producers发布消息到Exchanges。

    Queues, consumers从Queue中取消息。

    Bindings, 用来绑定Exchange和Queue,定义了消息从Exchange路由到Queue的规则。

    Connection: Connection是RabbitMQ的socket链接,它封装了socket协议相关部分逻辑。

    Channels: 消息传递的通道,建立在Connection中。

        

    Exchange Type

    RabbitMQ常用的Exchange Type有fanout、direct、topic、headers:

    fanout
    fanout类型的Exchange路由规则非常简单,它会把所有发送到该Exchange的消息路由到所有与它绑定的Queue中。

    direct
    direct类型的Exchange路由规则也很简单,它会把消息路由到那些binding key与routing key完全匹配的Queue中。

    topic
    前面讲到direct类型的Exchange路由规则是完全匹配binding key与routing key,但这种严格的匹配方式在很多情况下不能满足实际业务需求。topic类型的Exchange在匹配规则上进行了扩展,它与direct类型的Exchage相似,也是将消息路由到binding key与routing key相匹配的Queue中,但这里的匹配规则有些不同,它约定:

    headers
    headers类型的Exchange不依赖于routing key与binding key的匹配规则来路由消息,而是根据发送的消息内容中的headers属性进行匹配。
    在绑定Queue与Exchange时指定一组键值对;当消息发送到Exchange时,RabbitMQ会取到该消息的headers(也是一个键值对的形式),对比其中的键值对是否完全匹配Queue与Exchange绑定时指定的键值对;如果完全匹配则消息会路由到该Queue,否则不会路由到该Queue。

    Mac安装RabbitMQ:

    brew update 

    brew install erlang

    brew install rabbitmq

    vi ~/.bash_profile    PATH=$PATH:/usr/local/sbin   #添加环境变量

    rabbitmq-server   #启动rabbitmq

    web管理页面 http://localhost:15672/ 登录guest 密码guest

    ---

    end 

    觉得不错,点个赞吧
  • 相关阅读:
    无法往u盘里边复制超过4G的单个文件解决方法
    vue 自定义属性判断点击每个item 显示隐藏
    前端小组分享会之异步回调函数中的上下文
    git 的一些命令
    ES学习之promise
    mac找到占用端口号的进程ID
    meta link
    webpack学习笔记--安装
    css样式之 direction
    日常积累之JSON.stringify和JSON.parse substr
  • 原文地址:https://www.cnblogs.com/luangeng/p/5730463.html
Copyright © 2011-2022 走看看