• RabbitMQ 安装和功能点


    ===记录下本人在win10环境下安装RabbitMQ的步骤,以作备忘。

    1:下载并双击安装,并且配置系统变量path;C:Program Fileserl10.5in
    erlang(esl-erlang_22.1_windows_amd64.exe)
    原因:RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang。
    下载地址:http://www.erlang.org/downloads

    2,下载rabbitmq_server-3.8.3 下载地址:http://www.rabbitmq.com/download.html
    解压进入目录: C:Program Fileser_rabbitmq_server-3.8.3sbin
    以管理员身份CMD运行:rabbitmq-service install
    以管理员身份CMD运行:rabbitmq-plugins enable rabbitmq_management
    以管理员身份CMD运行:rabbitmqctl status

    3. 双击 rabbitmq-service.bat
    等几秒钟看到界面出现starting 后,访问http://localhost:15672

    ===RabbitMQ :

    1.优先级队列
    交换机exchange揭秘
    direct交换机 (直接交换器):消息发送到绑定的交换机指定的队列集上的队列routingkeyqueue上
    fanout交换机 (广播是式交换器):消息发送到绑定的交换机指定的队列集上
    topic交换机 (主题交换器):消息发送到绑定的交换机指定的队列集上的队列routingkeyqueue上,routingkeyqueue可以模糊匹配,分组,打标签;
    headers交换机 (消息体的header匹配),不依赖于routingkey,动态的拼装key-value,到达消息的灵活的转发到不同的消息队列中;
    消息持久化,消息扩容


    1. Direct(直接交换器) Exchange:直接交换器,工作方式类似于单播,Exchange会将消息 发送完全匹配ROUTING_KEY的Queue(一个消息发送到一个队列的routingkey中);
    2 Fanout(绑定式交换器)Exchange:fanout类型的Exchange路由规则非常简单,它会把所有发送到该Exchange的消息路由到所有与它绑定的Queue中(一个消息发送到多个队列中;)
    3 Topic (主题交换器) Exchange:通配符,模糊匹配绑定
    4 Header (消息体的header匹配) Exchange:不依赖于routing key与binding key的匹配规则来路由消息,any或者all参数匹配。如果设置为any,意思就是只要匹配到了headers表中的任何一个键值


    2.消息确认机制
    消息事务机制
    分布式异步队列事务问题
    RabbitMQ集群
    RabbitMQ普通集群
    RabbitMQ镜像集群

    消息确认机制:
    Confirm模式
    Tx事务模式
    Confirm模式:就是应答模式,生产者发送一条消息之后,Rabbitmq服务器做了个响应,OK,收到了;
    Tx事务模式:基于AMPQ协议;可以让信道设置成一个带事务的信道,分为三步:
    1.开启事务
    2.提交事务
    3.支持回滚
    Confirm模式:异步模式,在应答之前,可以继续发送消息;单条消息、批量消息
    事务模式:同步模式,在事务提交之前不能继续发送消的
    事务模式效率差一些;

    0.channel.ConfirmSelect();开启确认模式
    1. 单条消息确认: channel.waitForConfirms()
    2。批量消息确认: channel.waitForConfirmsOrDie()批量确认模式
    3。 异步监听消息确认:channel.addConfirmListener()

    channel.ConfirmSelect();开启确认模式
    消息发送以后,提供一个回执方法WaitForConfirms(); 返回一个bool 值


    从AMQP协议层面上来的事务模式;
    channel.TxSelect(); 开启一个事务
    channel.TxCommit();提交事务
    channel.TxRollback(); //事务回滚

    //手动确认 消息正常消费 告诉Broker:你可以把当前这条消息删除掉了
    channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);

    //autoAck: true 自动确认;
    channel.BasicConsume(queue: "ConsumptionACKConfirmQueue", autoAck: false, consumer: consumer);

    //设置优先级
    IBasicProperties props = channel.CreateBasicProperties();
    props.Priority = 1;

    //消息持久化,自动写到硬盘中;

    IBasicProperties basicProperties = channel.CreateBasicProperties();
    basicProperties.Persistent = true;

    dotnet AspNetCore.RabbitMQ.MessageProducer.dll

    什么是分布式异步队列
    大数据高并发系统架构
    异步队列的作用和意义
    常见的队列组件和优势
    异步队列学习必备组件RabbitMQ
    RabbitMQ的环境搭建中的那些坑儿
    C#驱动RabbitMQ
    生产者消费者模式
    分布式异步队列的优先级队列

    LogExchange
    ve_infoQueue
    ve_errorQueue


    1.消息的持久化;
    2.生产端消息的确认;
    3.消费端消息的确认;


    typora md 工具
    mobaxterm

    手动确认:消息正常消费,告诉broker:你可以把当前这条消息删除了
    channel.BasicAck(deliveryTag:ea.DeliveryTag,multiple:false);

    自动确认:
    接受1条就删除所有的消息;

  • 相关阅读:
    [hdu 2089] 不要62 数位dp|dfs 入门
    [poj 2456] Aggressive cows 二分
    NOIP 2016 DAY 1 爆炸记
    【模板】kmp
    【模板】LCA
    NOIP 之前的吐槽
    【模板】树状数组
    【模板】线段树
    【模板】高精度
    2016/11/15
  • 原文地址:https://www.cnblogs.com/csj007523/p/13970197.html
Copyright © 2020-2023  润新知