博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Rabbitmq 消息堆积测试
阅读量:1970 次
发布时间:2019-04-27

本文共 805 字,大约阅读时间需要 2 分钟。

1.  问题

在rabbitmq的pub/sub模式中,是否会出现消息堆积现象。比如,生产者向exchange发送了大量消息,而此时consumer不work,无法处理,等到consumer online后,是否会接受到大量的消息?

初学者,特进行尝试

2. 结论

                                 ------queue1

pub-------exchange-------

                                 -------queue2

此种模式下,如果发送了20条消息,待两个consumer 启动后,各收到20个(前提是已经启动过,exchange和queue1, queue2之间有binding关系

                                 ------queue

pub-------exchange-------

                                 -------queue

此种模式,同样20条消息,同样的情形,采用round-robin方式分发,各收到10个。前提是已经启动过,exchange和queue1, queue2之间有binding关系

只有queue注册的exchange上,才会收到fanout的消息,如果发送20条消息,然后启动两个consumer(先解除queue和exchange的binding关系,因为最初是没有binding关系的),根本无法收到堆积的消息。

由于pub/sub采用的是动态队列,所以consumer启动时,是不可能收到堆积的消息的。

3.  队列消息数目

当然,如果不是动态队列,我们可以通过以下方法获取队列中的message数目。

    channel.exchangeDeclare(EXCHANGE_NAME, "fanout",true);

    DeclareOk  DeclareOk=channel.queueDeclare("queue", true, false,false,null);
    System.out.println(DeclareOk.getMessageCount());

转载地址:http://rrfpf.baihongyu.com/

你可能感兴趣的文章
SpringBoot整合Redis事务
查看>>
项目整合一级缓存和二级缓存
查看>>
自定义注解和aop抽取重复代码
查看>>
互联网API开放平台安全设计-基于OAuth2.0协议方式
查看>>
URL特殊字符转码
查看>>
对称加密整个过程
查看>>
java内存模型
查看>>
volatile关键字
查看>>
tomcat_启动问题分析
查看>>
tomcat_关闭
查看>>
tomcat_动态java项目的目录结构
查看>>
Servlet_快速入门
查看>>
Servlet_生命周期方法
查看>>
Servlet_生命周期详解
查看>>
IDEA与tomcat相关配置
查看>>
Servlet_体系结构
查看>>
Servlet_urlpartten配置
查看>>
Request_原理
查看>>
Request_继承体系
查看>>
Request_获取请求行数据_方法介绍
查看>>