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());
  • 相关阅读:
    查看单据项目文本对应的参数信息
    下载EPM包详细运行日志
    ABAP 字符串换行符处理
    PyCharm编辑HTML文件时输入{%不能自动补全
    Ubuntu 18.04安装MongoDB 4.0
    ubuntu18.04(bionic) 配置阿里数据源
    【Python】迭代器
    【python】多任务(2. 进程)
    【python】多任务(1. 线程)
    【python】文件下载---基础版
  • 原文地址:https://www.cnblogs.com/yifanSJ/p/9007409.html
Copyright © 2011-2022 走看看