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

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的

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

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

最新文章

  1. fifo write
  2. JavaWeb网页聊天室(WebSocket即时通讯)
  3. C++-static的用法
  4. 【2011 Greater New York Regional 】Problem B The Rascal Triangle
  5. spring core源码解读之ASM4用户手册翻译之一asm简介
  6. objective-c基础教程
  7. Oracle_sqlload导数案例
  8. js中escape的用法----前端页面简单加密
  9. Python---多线程(threading)
  10. ActiveMQ笔记:源码分析
  11. 【AO笔记】有关TIN数据集的常用介绍
  12. python中的GIL详解
  13. SpringBoot学习笔记<二>注解
  14. Python module ---- abc
  15. 解决VS Code使用code runner开发Python乱码问题
  16. element vuex 语音播报
  17. SqlDataAdapter简单介绍 (转)
  18. 【WPF】Silverlight中的Action与Trigger
  19. django-templates过滤器
  20. 手机站CSS

热门文章

  1. Hive SQL查询效率提升之Analyze方案的实施
  2. svn安装方法
  3. img 图像底部留白的原因以及解决方法
  4. 2 java开发环境的配置步骤
  5. Excel中把图片合并进图表的方法介绍
  6. java字符常量
  7. element table 表格 修改背景为透明并去除边框
  8. Vue-Cli项目如何查看依赖调用关系?
  9. mac-svn代码管理
  10. 3.java并发包