RabbitMQ 死信队列 延时
package com.hs.services.config; import java.util.HashMap;
import java.util.Map; import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; /**
* rabbitmq 配置
* @author ZHANGYUKUN
*
*/
@Configuration
public class RabbitMQConfig { //钱包交换机
public static final String walletExchange = "walletExchange"; //红包交换机
public static final String redpacketExchange = "redpacketExchange"; @Bean
public DirectExchange walletExchange() {
return new DirectExchange(RabbitMQConfig.walletExchange, true, false);
}
@Bean
public DirectExchange redpacketExchange() {
return new DirectExchange(RabbitMQConfig.redpacketExchange, true, false);
} /**
* 钱包
*/
public static final String walletAmountChange = "walletAmountChange";
public static final String walletAmountChangeDL = "walletAmountChangeDL"; /**
* 红包
*/
public static final String redpacketChange = "redpacketChange";
public static final String redpacketChangeDL = "redpacketChangeDL"; /**
* 钱包余额 相关
* @return
*/
@Bean
public Queue walletAmountChange() {
return new Queue( RabbitMQConfig.walletAmountChange );
}
@Bean
public Queue walletAmountChangeDL() {
Map<String, Object> arguments = new HashMap<>();
arguments.put("x-dead-letter-exchange", RabbitMQConfig.walletExchange);
arguments.put("x-dead-letter-routing-key", RabbitMQConfig.walletAmountChangeDL);
return new Queue(RabbitMQConfig.walletAmountChangeDL, true, false, false, arguments);
}
@Bean
public Binding walletAmountChangeBind(Queue walletAmountChange ,DirectExchange walletExchange ) {
return BindingBuilder.bind( walletAmountChange ).to( walletExchange ).with( RabbitMQConfig.walletAmountChange );
}
@Bean
public Binding walletAmountChangeBindDL(Queue walletAmountChangeDL ,DirectExchange walletExchange ) {
return BindingBuilder.bind( walletAmountChangeDL ).to( walletExchange ).with( RabbitMQConfig.walletAmountChangeDL );
} /**
* 钱包余额 相关
* @return
*/
@Bean
public Queue redpacketChange() {
return new Queue( RabbitMQConfig.redpacketChange );
}
@Bean
public Queue redpacketChangeDL() {
Map<String, Object> arguments = new HashMap<>();
arguments.put("x-dead-letter-exchange", RabbitMQConfig.redpacketExchange);
arguments.put("x-dead-letter-routing-key", RabbitMQConfig.redpacketChangeDL);
return new Queue(RabbitMQConfig.redpacketChangeDL, true, false, false, arguments);
}
@Bean
public Binding redpacketChangeBind(Queue redpacketChange ,DirectExchange redpacketExchange ) {
return BindingBuilder.bind( redpacketChange ).to( redpacketExchange ).with( RabbitMQConfig.redpacketChange );
}
@Bean
public Binding redpacketChangeBindDL(Queue redpacketChangeDL ,DirectExchange redpacketExchange ) {
return BindingBuilder.bind( redpacketChangeDL ).to( redpacketExchange ).with( RabbitMQConfig.redpacketChangeDL );
} }
上述 ,配了 死信队列,如果 如果 发送到 死信里面的消息 如果 超时,就会被转交给 对应的 正常队列。 死信 的这个特点可以做延时消息。
RabbitMQ 死信队列 延时的更多相关文章
- RabbitMQ死信队列另类用法之复合死信
前言 在业务开发过程中,我们常常需要做一些定时任务,这些任务一般用来做监控或者清理任务,比如在订单的业务场景中,用户在创建订单后一段时间内,没有完成支付,系统将自动取消该订单,并将库存返回到商品中,又 ...
- rabbitmq死信队列消息监听
#邮件通知并发送队列消息#!/bin/bash maillog="/var/log/mq.maillog" message_file="/tmp/mq_message&q ...
- rabbitmq死信队列和延时队列的使用
死信队列&死信交换器:DLX 全称(Dead-Letter-Exchange),称之为死信交换器,当消息变成一个死信之后,如果这个消息所在的队列存在x-dead-letter-exchange ...
- 【RabbitMQ】一文带你搞定RabbitMQ死信队列
本文口味:爆炒鱿鱼 预计阅读:15分钟 一.说明 RabbitMQ是流行的开源消息队列系统,使用erlang语言开发,由于其社区活跃度高,维护更新较快,性能稳定,深得很多企业的欢心(当然,也包括我 ...
- .Net Core&RabbitMQ死信队列
过期时间 RabbitMQ可以为消息和队列设置过期时间Time To Live(TTL).其目的即过期. 消息过期时间 消息存储在队列中时,如果想为其设置一个有限的生命周期,而不是一直存储着,可以为其 ...
- RabbitMQ死信队列
关于RabbitMQ死信队列 死信队列 听上去像 消息“死”了 其实也有点这个意思,死信队列 是 当消息在一个队列 因为下列原因: 消息被拒绝(basic.reject/ basic.nac ...
- springboot rabbitmq 死信队列应用场景和完整demo
何为死信队列? 死信队列实际上就是,当我们的业务队列处理失败(比如抛异常并且达到了retry的上限),就会将消息重新投递到另一个Exchange(Dead Letter Exchanges),该Exc ...
- 【MQ中间件】RabbitMQ -- RabbitMQ死信队列及内存监控(4)
1.RabbitMQ TTL及死信队列 1.1.TTL概述 过期时间TTL表示可以对消息设置预期的时间,在这个时间内都可以被消费者接收获取:过了之后消息将自动被删除.RabbitMQ可以对消息和队列设 ...
- RabbitMq死信队列(接盘侠)
队列创建之后,后期对其修改或者参数添加会报错.需要把队列重新删除,重新创建线上环境不能把队列删除,优雅安全的方式是重新建一个队列,把死信队列相关的队列进行绑定 在有过期时间的队列中设定最大接收能力5条 ...
随机推荐
- prometheus告警配置注意事项
global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minut ...
- restore not found的错误
tensorflow保存模型后,restore的时候报参数not found是什么原因呢 一般预测的流程是:建图然后restore参数,很有可能你的变量作用域和train的时候不一样,那么在现在的变量 ...
- wrk 使用记录及踩过的坑
wrk是什么?https://github.com/wg/wrk wrk 是一个非常小巧高效的开源性能测试工具,支持lua脚本来创建复杂的测试场景.wrk 的一个很好的特性就是能用很少的线程压出很大的 ...
- 946. Validate Stack Sequences验证栈序列
网址:https://leetcode.com/problems/validate-stack-sequences/ 参考:https://leetcode.com/problems/validate ...
- 第一个博客——python通过值传递函数参数
功能:银行账户计算利率(python实现) 部分代码: def addInterest(balance, rate): newBalance = balance * (1 + rate) balanc ...
- 转载:escape,encodeURI,encodeURIComponent有什么区别?
escape unescape encodeURI decodeURI encodeURIComponent decodeURIComponent 这六个方法功能有关联,如果不清楚每一个的作用,很容易 ...
- js splice函数 数组增加,替换,删除
splice函数参数介绍: 第一个参数: 对于数数组的操作起始位置. 第二个参数: 从第一个参数开始,删除数组中的个数. 从第三个参数之后所有参数(如果有):执行完第二步之后,都插入到第一个参数的起始 ...
- mysql 判断某字段是否包含中文
SELECT col FROM table WHERE LENGTH(col) != CHAR_LENGTH(col) LENGTH() 函数:返回字符串的长度,已字节符为单位 CHAR_LENGTH ...
- navicat 定时备份
1.点击备份-->新建备份 2.对象选择:可以选择要备份的表也可以不选,默认全部选择:之后点击保存:输入文件名即可:注意弹框不会消失,这是已经生成了备份任务 3.点击计划-->新建批量计划 ...
- oracle 汉字转拼音
oracle汉字转拼音(获得全拼/拼音首字母/拼音截取等) 效果如下: Oracle 字符集 GBK 没有问题 , UTF -8 需要修改一下 Sql代码 --oracle汉字转拼音 PACKAGE ...