RabbitMq总结

2018-11-20  本文已影响0人  java小强

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

两个队列

上一篇下一篇

猜你喜欢

热点阅读