通过配置死信队列,可以让未正确处理的消息暂存到另一个队列中,待后续排查清楚问题后,编写相应的处理代码来处理死信消息,这样比手工恢复数据要好太多了。 2. 延时队列使用场景 订单在十分钟之内未支付则自动取消。 新创建的店铺,如果在十天内都没有上传过商品,则自动发送消息提醒。 账单在一周内未支付,则自动结算。
$queue_name 队列名称 $passive 是否检测同名队列 $durable 是否开启队列持久化 $exclusive 队列是否可以被其他队列访问 $auto_delete 通道关闭后是否删除队列 2.5 创建要发送的信息 ,可以创建多个消息 $msg = new AMQPMessage($data, $properties) $data 要发送的消息 $properties Array 设置的属性,比如设置该消息...
发送消息时,在消息体内携带一个唯一标识uuid,存入内存/redis,如果查到,可以直接拒绝此消息 往数据库做插入,可以借助数据库的主键,保证数据不会被重复插入 四、消息队列的优缺点和使用场景 1、优点 解耦:降低系统之间的依赖,使用A-MQ-B,A不强依赖B,异步调用,无需考虑熔断、服务降级等操作 异步处理:不需要同步等待...
//延迟交换机fanoutpublic static final String DELAY_EXCHANGE_NAME_30="delay_exchange_name_30";//延时队列Apublic static final String DELAY_QUEUEA_NAME_30="delay_queuea_name_30";//延时队列Bpublic static final String DELAY_QUEUEB_NAME_30="delay_queueb_name_30";//死信交换机public static final...
3、使用场景 日志采集:避免影响业务,可以异步发送【可以容忍重复和丢失】 发布订阅:对事件感兴趣的,自己来消费,类似于Java的监听器;A调多个系统,BCD各自接收消息,执行对应的逻辑 五、死信队列是什么?延时队列是什么? 1、死信队列 用于存放没有成功消费的消息 ...
使用场景 1. 死信队列使用场景 一般用在较为重要的业务队列中,确保未被正确消费的消息不被丢弃,一般发生消费异常可能原因主要有由于消息信息本身存在错误导致处理异常,处理过程中参数校验异常,或者因网络波动导致的查询异常等等,当发生异常时,当然不能每次通过日志来获取原消息,然后让运维帮忙重新投递消息(没错,以前就是...