当前位置:   article > 正文

RabbitMQ(高级)笔记

RabbitMQ(高级)笔记

一、生产者可靠性

(1)生产者重连(不建议使用)

  1. logging:
  2. pattern:
  3. dateformat: MM-dd HH:mm:ss:SSS
  4. spring:
  5. rabbitmq:
  6. virtual-host: /hamll
  7. port: 5672
  8. host: 192.168.92.136
  9. username: hmall
  10. password: 123
  11. listener:
  12. simple:
  13. prefetch: 1
  14. connection-timeout: 1s
  15. template:
  16. retry:
  17. enabled: true
  18. initial-interval: 1000ms
  19. multiplier: 1
  20. max-attempts: 3

 (2)生产者确认

 

 引入日志依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-logging</artifactId>
  4. </dependency>

二、MQ持久化

(1)持久化介绍

 

 

 发送100万条消息给队列,需要先在application.yml中取消生产者确认

  1. publisher-confirm-type: none
  2. publisher-returns: false

没有持久化的测试用例,会出行阻塞的状态: 

改为持久化后的测试用例:

(2)最好的持久化方式Lazy Queue

 

 三、消息可靠性

(1)消费者确认

使用auto自动模式 

(2)失败重试机制 

 

 (3)业务幂等性

四、延迟消息

(1)死信交换机

注意:创建的simple.queue需要Add Dead letter exchange,其他都跟之前创建的操作差不多

 监听

  1. @RabbitListener(queues = "dlx.queue")
  2. public void listenDlxQueue(String msg){
  3. log.info("dlx.queue消费者收到消息:"+msg);
  4. }

测试用例

  1. @Test
  2. void testSendTTLMessage(){
  3. rabbitTemplate.convertAndSend("simple.direct", "hi", "hello", new MessagePostProcessor() {
  4. @Override
  5. public Message postProcessMessage(Message message) throws AmqpException {
  6. message.getMessageProperties().setExpiration("10000");
  7. return message;
  8. }
  9. });
  10. log.info("消息发送成功!");
  11. }

(2)延迟消息插件

 

(3)取消订单

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/496765
推荐阅读
相关标签
  

闽ICP备14008679号