• Rabbitmq 延时消息


    原理网上一大堆,比我说的清楚,大家可以去看看,这里就不说了。

    安装配置

    注意 plugins 的处理,因为需要安装一个 rabbitmq_delayed_message_exchange 插件,在 3.7.13 版本中无法使用 rabbitmq-plugins enable rabbitmq_delayed_message_exchange 进行安装,会提示找不到,所以只能自己上 https://www.rabbitmq.com/plugins.html 去下载。

    version: '3.1'
    services:
      rabbitmq:
        restart: always
        image: rabbitmq:management
        container_name: rabbitmq
        ports:
          - 5672:5672
          - 15672:15672
        environment:
          TZ: Asia/Shanghai
          RABBITMQ_DEFAULT_USER: admin
          RABBITMQ_DEFAULT_PASS: admin
        volumes:
          - ./data:/var/lib/rabbitmq
          - ./data:/etc/rabbitmq
          - ./plugins:/plugins
    

    在处理plugins之后,注意配置一下 enabled_plugins

    [rabbitmq_management,rabbitmq_delayed_message_exchange].
    

    使用

    配置delayExchange,队列,并且绑定。

    @Configuration
    public class RabbitConfig {
    
        @Bean
        public FanoutExchange delayExchange() {
            HashMap<String, Object> args = new HashMap<>();
            args.put("x-delayed-type", "direct");
            FanoutExchange topicExchange = new FanoutExchange("delay_exchange", true, false, args);
            topicExchange.setDelayed(true);
            return topicExchange;
        }
    
        @Bean
        public Queue queue() {
            Queue queue = new Queue("delay_queue");
            return queue;
        }
    
        @Bean
        public Binding binding() {
            return BindingBuilder.bind(queue()).to(delayExchange());
        }
    }
    

    发送消息

    rabbitTemplate.convertAndSend("delay_exchange", queue, msg, message -> {
        message.getMessageProperties().setDeliveryMode(MessageDeliveryMode.PERSISTENT);
        // 这里的时间用来设置延时多久
        message.getMessageProperties().setHeader("x-delay", 30000);
        return message;
    });
    

    接收消息

    @Component
    public class MessageReceiver {
        @RabbitListener(queues = "delay_queue")
        public void receive(String msg) {
            System.out.println("接收到的消息:"+msg);
        }
    }
    
  • 相关阅读:
    Python接口自动化测试(15):Django后台设置
    Python接口自动化测试(14):Django安装和项目创建
    Python接口自动化测试(13):Jmeter测试报告
    Python接口自动化测试(12):Jmeter授权设置
    Python接口自动化测试(11):Jmeter数据驱动
    Python接口自动化测试(10):Jmeter参数关联
    Python接口自动化测试(9):Jmeter变量设置
    redis高可用集群搭建
    熔断器 Hystrix
    负载均衡 Ribbon
  • 原文地址:https://www.cnblogs.com/Godfunc/p/10722437.html
Copyright © 2020-2023  润新知