zoukankan      html  css  js  c++  java
  • RabbitMQ 使用总结

    RabbitMQ

    1.RabbitMQ常用的交换器类型有direct、topic、fanout、headers四种。

    1.1 Direct Exchange直接

    该类型的交换器将所有发送到该交换器的消息被转发到RoutingKey指定的队列中,也就是说路由到BindingKey和RoutingKey完全匹配的队列中。

    1.2 Topic Exchange 主题

    该类型的交换器将所有发送到Topic Exchange的消息被转发到所有RoutingKey中指定的Topic的队列上面。

    Exchange将RoutingKey和某Topic进行模糊匹配,其中“”用来匹配一个词,“#”用于匹配一个或者多个词。例如“com.#”能匹配到“com.rabbitmq.oa”和“com.rabbitmq”;而"login."只能匹配到“com.rabbitmq”。

    1.3 Fanout Exchange 扇形分叉

    该类型不处理路由键,会把所有发送到交换器的消息路由到所有绑定的队列中。优点是转发消息最快,性能最好(一发多收)

    1.4 Headers Exchange

    该类型的交换器不依赖路由规则来路由消息,而是根据消息内容中的headers属性进行匹配。headers类型交换器性能差,在实际中并不常用。

    2.消息生产者确认:
    开启事务机制
    channel.TxSelect(); //事务是协议支持的
    channel.TxCommit(); //只有事务提交成功以后,才会真正的写入到队列里面去
    channel.TxRollback(); //事务回滚

    //开启消息异步确认模式
    channel.ConfirmSelect();
    if (channel.WaitForConfirms()) //如果一条消息或多消息都确认发送

    channel.WaitForConfirmsOrDie();//如果所有消息发送成功 就正常执行;如果有消息发送失败;就抛出异常;

    3.消息消费者确认消息:
    autoAck: true 自动确认;
    channel.BasicConsume(queue: "ConsumptionACKConfirmQueue", autoAck: true, consumer: consumer);

    手动确认 消息正常消费 告诉Broker:你可以把当前这条消息删除掉了
    channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
    否定:告诉Broker,这个消息我没有正常消费; requeue: true:重新写入到队列里去; false:你还是删除掉;
    channel.BasicReject(deliveryTag: ea.DeliveryTag, requeue: true);

    4.设置消息优先级最高 重新写入到队列中去,消息持久化需要将交换机持久化、队列持久化、消息持久化,才能最终达到持久化的目的
    IBasicProperties props = channel.CreateBasicProperties();
    props.Priority = 9; //0-9数值越大优先级越高
    props.DeliveryMode = 2;//2=消息持久化模式;1=默认不持久化

    5.rabbitmq集群:
    普通集群:只同步了数据结构,没有同步元数据,真实获取数据还要到存储数据的节点上去数据;没有做到高可用,高并发;
    消息队列集群:同步了数据结构和元数据,一个节点失败,不影响系统正常发送消息,接收消息;

    由于Erlang节点间通过认证Erlang cookie的方式来允许互相通信,所以个节点RABBITMQ_ERLANG_COOKIE必须设置为相同的

  • 相关阅读:
    【JAVA Swing】自定义弹出的无边提醒框(可自动消失)
    java比较器Comparator的简单使用
    BoneCP的简单使用
    鸿蒙的js开发部模式18:鸿蒙的文件上传到python服务器端
    【知识点前情提要】鸿蒙小白入门指南!跟着张荣超老师学鸿蒙
    分布式流转开发常见报错FAQ
    Ability之间或者进程间数据传递之对象(Sequenceable序列化)
    【资源下载】安卓VS鸿蒙第三方件切换宝典 V1.0
    鸿蒙开源第三方组件 ——B站开源弹幕库引擎的迁移(上)
    鸿蒙的js开发部模式17:鸿蒙的系统能力的应用模块
  • 原文地址:https://www.cnblogs.com/csj007523/p/14844246.html
Copyright © 2011-2022 走看看