美文网首页
RabbitMq总结

RabbitMq总结

作者: java小强 | 来源:发表于2018-11-20 18:35 被阅读0次

    Rabbitmq

    应用场景

    异步、解耦、削峰、发布订阅、事物一致性等等

    windows集群搭建

    1.下载erlang、rabbitmq

    2.配置环境变量ERLANG_HOME、RABBITMQ_BASE

    3.统一erlang.cookie

    4.在hosts文件中增加节点名称和对应的ip配置

    5.逐个修改rabbitmq节点的配置文件

    1).etc目录下修改config文件的监听listener

    2).sbin目录下的rabbitmq-env.bat

    6.逐个启动节点并打开管理界面

    7.把从节点集群到主节点

    最后访问管理界面127.0.0.1:15672来验证搭建是否成功

    至此,搭建完成。

    Rabbitmq demo

    说明:demo搭建为springboot

    1、导入maven依赖

    2、配置rabbitmq基本信息

    3、编写RabbitConfig类,类里面设置很多个EXCHANGE,QUEUE,ROUTINGKEY,是为了接下来的不同使用场景。

    4.生产者

    5.消费者

    启动项目后,可以从管理界面看到项目中声明的bean:

    交换机

    队列

    测试debug

    结果:

    另外的模式就不一一去做了

     

     

    补充几点:

    1、TTL(Time To Live)

    队列的过期时间决定了在没有任何消费者以后,队列可以存活多久。

    有两种设置方式:

    通过队列属性设置消息过期时间:

    Map<String,Object>argss=newHashMap<String,Object>();argss.put("x-message-ttl",6000);

    channel.queueDeclare("TEST_TTL_QUEUE",false,false,false,argss);

    设置单条消息的过期时间:

    2、死信队列

    有三种情况消息会进入DLX(Dead Letter Exchange)死信交换机。

    1)、(NACK || Reject ) && requeue == false

    2)、消息过期

    3)、队列达到最大长度(先入队的消息会被发送到DLX)

    可以设置一个死信队列(Dead Letter Queue)与DLX绑定,即可以存储Dead Letter,消费者可以监听这个队列取走消息。

    3、优先级队列

    设置一个队列的最大优先级:

    发送消息时指定消息当前的优先级:

    优先级高的消息可以优先被消费,但是:只有消息堆积(消息的发送速度大于消费者的消费速度)的情况下优先级才有意义。

    4、延迟队列

      可用死性队列实现

    5、RPC

    两个队列

    相关文章

      网友评论

          本文标题:RabbitMq总结

          本文链接:https://www.haomeiwen.com/subject/gcgxqqtx.html