zoukankan      html  css  js  c++  java
  • RabbitMQ —— 延迟队列

    RabbitMQ实现延迟队列一:在队列上设置TTL

    Publish --> delaysync.exchange --> delay.5m.queue(延迟队列) --> delay.exchange --> test.queue(正常队列) --> Consumer

    //延迟队列start
    Map<String,Object> map = new HashMap<String,Object>();
    map.put("x-message-ttl", 10000);//消息过期时间
    map.put("x-max-length", 500000);//最大积压的消息个数
    map.put("x-dead-letter-exchange", "delay.exchange");//消息过期后会投递到delay.exchange
    channel.queueDeclare("delay.5m.queue", true, false, false, map);

    RabbitMQ实现延迟队列二:在消息上设置TTL

    Publish --> default exchange --> delay_queue(延迟队列) --> amq.direct --> message_ttl_queue(正常队列) --> Consumer

    队列:

    //延迟队列
    Map<String,Object> arguments = new HashMap<String,Object>();
    arguments.put("x-dead-letter-exchange", "amq.direct");//消息过期后会投递到amq.direct
    arguments.put("x-dead-letter-routing-key", "message_ttl_routingKey");//出现dead letter之后将重新按照指定的routing-key发送
    channel.queueDeclare("delay_queue", true, false, false, arguments);

    消息发送:

    //设置延迟属性
    AMQP.BasicProperties.Builder builder = new AMQP.BasicProperties.Builder();
    //deliveryMode:将消息标记为持久(值为2)或瞬态(任何其他值)
    AMQP.BasicProperties properties = builder.expiration("10000").deliveryMode(2).build();
    channel.basicPublish("", "delay_queue", properties, msg.getBytes());
  • 相关阅读:
    FCN详解
    4、2支持向量机SVM算法实践
    Matplotlib
    4、Caffe其它常用层及参数
    6、TensorFlow基础(四)队列和线程
    0、weka学习与使用
    5、Tensorflow基础(三)神经元函数及优化方法
    4、TensorFlow基础(二)常用API与变量作用域
    elsa-core:4.ASP.NET Core Server with Elsa Dashboard
    elsa-core:3.elsa 服务
  • 原文地址:https://www.cnblogs.com/yifanSJ/p/9007409.html
Copyright © 2011-2022 走看看