zoukankan      html  css  js  c++  java
  • 消息中间件 rabbitMQ

    参考内容:https://www.cnblogs.com/dwlsxj/p/RabbitMQ.html

    一、什么是RabbitMQ

    RabbitMQ是一个由erlang 开发的AMQP(Advanced Message Queue)的开源实现。RabbitMQ是由 RabbitMQ Technologies Ltd 开发并技工技术支持。

    erlang: 是一种通用的面向并发的编程语言,最早是由爱立信专门为通信应用设计的,控制交换机或者变换协议等。

    二、原理

    RabbitMQ 基本原理

    Queue(队列)

    rabbitMQ作用是存储消息,生产者产生消息发送到RabbitMQ内部对象Queue中,而消费者从Queue对列中取得数据

    上边 是一个生产者对应一个消费者,当存在多个消费者订阅一个队列时,队列会将消息平分给其他消费者。但是每个消息处理时间不同,导致一些消费者一直忙碌,有些消费者处理完就一直空闲。

    RabbitMQ使用 prefetchCount 来限制每次发送给消费者消息个数。

    上边 prefetchCount = 1 指的是队列每次发送一条消息,当处理完再发送。

    Exchange(交换器)

    RabbitMQ 中存在多个队列,那么生产者如何指定消息发送给哪个队列呢?

    生产者产生的消息并不是直接发送给Queue 的,而是经过Exchange,exchange 将消息路由给一个或者多个Queue,不符合路由规则的消息丢掉.

    路由如何准确的将消息推送给Queue ? Binding, RabbitMQ 通过Binding 将 Exchange 与Queue 链接再一起,这样就直到要推送的消息去哪个队列

    绑定(Binding)

    Exchange和Queue的同时,一般会指定一个Binding Key,生产者将消息发送给Exchange的时候,一般会产生一个Routing Key,当Routing Key和Binding Key对应上的时候,

    消息就会发送到对应的Queue中去。那么Exchange有四种类型,不同的类型有着不同的策略。也就是表明不同的类型将决定绑定的Queue不同,换言之就是说生产者发送了

    一个消息,Routing Key的规则是A,那么生产者会将Routing Key=A的消息推送到Exchange中,这时候Exchange中会有自己的规则,对应的规则去筛选生产者发来的消息,

    如果能够对应上Exchange的内部规则就将消息推送到对应的Queue中去。

    Exchange Type

    1.fanout 将所有发送到exchange  的消息发送到与它绑定的Queue 中

    2.direct  发送到所有 binding key 与 routing key 匹配的 Queue

    3.topic 模糊匹配发送

    4.headers

    根据发送消息的 headers 属性进行匹配

    三、如何在 windows 上安装 RabbitMQ

    安装 rabbitMQ 首先需要安装 erlang opt

    1.下载安装 Erlang (安装版)  https://www.erlang.org/downloads

    2.下载RabbitMQ(二进制文件或者 window 安装版window  install)https://www.rabbitmq.com/download.html

     3.RabbitMQ 默认的端口 :5672 ,激活可视化的插件

     切换到rabbitmq sbin 目录下

    执行

    rabbitmq-plugins.bat  enable  rabbitmq_management

    管理员运行dos 执行重启

    net stop RabbitMQ && net start RabbitMQ

    浏览器查询 http://localhost:15672(需要先创建管理用户,如下)

    四、rabbitMQ 创建用户、密码、权限

    进入rabbitMQ sbin 目录

    1.查看用户

     rabbitmqctl.bat  list_users

    2.创建用户

    rabbitmqctl.bat add_user  用户名  密码

    3.设置管理员

    rabbitmqctl.bat set_user_tags  用户名  administrator
  • 相关阅读:
    react模拟后端接口及提交方式 json-server
    CSS基础知识(概念、块级元素、行内元素、选择器)
    HTML基础知识(表格、表单)
    HTML基础知识(常见元素、列表、链接元素、图片元素)
    【Ionic】---AngularJS扩展基本布局
    多行文本溢出显示省略号…
    【AngularJs】---"Error: [ng:areq] Argument 'fn' is not a function, got undefined"
    【AngularJs】---$sce 输出Html
    【AngularJs】---实现select的ng-options
    浅谈WLAN干扰与抗干扰技术
  • 原文地址:https://www.cnblogs.com/baizhuang/p/10569961.html
Copyright © 2011-2022 走看看