rabbitMq实战使用

摘要:
只做工作记录。更重要的属性是:并发性:生产者可以同时消费多少消费者。这通常根据机器的性能进行配置。预取:允许为每个消费者指定未激活消息的最大数量。如果对实时性的要求很高,预取应设置为1。将并发值增加到队列中处于就绪状态和未确认状态的消息数,这是指等待传递给消费者的消息数以及已传递给消费者但未收到确认信号的消息数。

只做下工作记录,比较重要的几个属性:

concurrency:一个生产者可以同时由多少个消费者消费,这个一般根据你的机器性能来进行配置

prefetch:允许为每个consumer指定最大的unacked messages数目。要是对实时性要求很高的话,prefetch应该设置成1,concurrency的值调高点

队列中Ready状态和Unacknowledged状态的消息数,分别指的是等待投递给消费者的消息数和已经投递给消费者但是未收到ack信号的消息数。

注意配置超时重连机制,防止死机

spring.rabbitmq.listener.simple.retry.max-attempts=5
spring.rabbitmq.listener.simple.retry.enabled=true
spring.rabbitmq.listener.simple.retry.initial-interval=5000
spring.rabbitmq.listener.simple.default-requeue-rejected=false
spring.rabbitmq.listener.simple.prefetch=1

Springboot中消费简单实现

@RabbitListener(concurrency = "12",bindings = {@QueueBinding(value = @Queue(value = YOUR_QUEUE), exchange = @Exchange(value = YOUR_EXCHANGE,type = "fanout"))})
    public void process(Message message, com.rabbitmq.client.Channel channel) {

        Long deliveryTag = null;
        String data = null;
        try {

            deliveryTag = message.getMessageProperties().getDeliveryTag();
            data = new String(message.getBody(), "UTF-8");

            //业务处理

        } catch (Exception e) {
            logger.warn("=====消息处理异常");
            logger.warn("MQ异常 {} , {} , {}" , e.getMessage(),e.getCause(),data);
        }finally {

            try {
                channel.basicAck(deliveryTag, false); // 确认消息成功消费
            } catch (IOException e) {
                logger.warn("======应答出错,请检查");
            }
            logger.warn("======消息结束");
        }
    }

 特别要注意的是:如果不是用springboot注解形式连接,很多时候会因为配置的问题导致access refused(queue 或 exchange),这个时候一定要注意参数是否使用正确,比如php的

rabbitMq实战使用第1张

另外如果交换机和队列不允许客户进行声明操作的,要注意passive等于true

 转载请注明博客出处:http://www.cnblogs.com/cjh-notes/

免责声明:文章转载自《rabbitMq实战使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇AFN和MBProgressHUD组合封装Gridview控件的使用要点下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ansible debug模块学习笔记

ansible playbook可以将多个命令组合来执行,但是很多时候我们需要接收服务器的反馈,所以debug模块就非常重要了。 模块说明 调试模块,用于在调试中输出信息 常用参数:msg:调试输出的消息 var:将某个任务执行的输出作为变量传递给debug模块,debug会直接将其打印输出 verbosity:debug的级别(默认是0级,全部显示)...

Qt for windows消息循环、libqxt分析和wince快捷键处理

Qt for windows消息循环、libqxt分析和wince快捷键处理 利用Qt做windows图形界面开发和MFC相比,个人感觉还是比较简单好用的:首先利用Designer工具搞个ui文件;然后在程序中写几个信号和槽;然后加载ui文件;最后显示界面就搞定了。 在界面开发中,快捷键处理肯定是必不可少的。现在使用的是开源的第三方处理类:libqxt。它...

常见的MIME类型

作者:景安网络 MIME类型 MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。 MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。 常用Mime类型: 文件后缀 Mime类型 说明 .flv flv/flv-flash 在线播放 .html或.h...

手机软件Toast无法显示提示信息

  近日在做项目时,测试组的同事提出一个bug,就是在一台LG手机上,原本应该显示的Toast信息,都不显示,消息栏也没有出现通知,后来经过查资料知道有些三星、LG手机默认禁用了显示通知那一项,而不显示通知时,Toast也显示不出来的。 解决办法:三星、LG手机禁用开启消息的选项,在手机设置-->应用程序管理-->不显示Toast的应用程序,有...

Linux 长时间操作设置不断开

1、第一次尝试失败 修改/etc/ssh/sshd_config文件, 找到 ClientAliveInterval 0 ClientAliveCountMax 3 并将注释符号("#")去掉, 将ClientAliveInterval对应的0改成60, ClientAliveInterval指定了服务器端向客户端请求消息 的时间间隔, 默认是0, 不发送...

windows下安装rabbitMQ教程(实战可用)

参考:https://blog.csdn.net/xiaopu99/article/details/79109584 https://blog.csdn.net/leihui_2009/article/details/80638964 前沿: 主要端口说明4369 -- erlang发现口 5672 --client端通信口 15672 -- 管理界面ui...