pheanstalk put 延时队列

用pheanstalk客户端投放延时任务时,按照文档的参数顺序投放起不到延时的效果,取出(预订)job时data获取的数据也不是投放的字段值,

put <pri> <delay> <ttr> <bytes>\r\n
<data>\r\n  
 

投放时,把这些参数顺序和文档上展示的顺序相反,预定任务时也起到了延时效果,并且也能拿到正确的data数据

public function actionPutjob(){   $pheanstalk = new Pheanstalk(‘192.168.110.100‘);   for($i=100;$i>0;$i--) {       $put = $pheanstalk->useTube(‘testtube‘)->put(           $i.‘abc‘,    // 任务内容           $i,          // 处理任务的时间           $i,          // 0为不等待直接放到ready队列中           $i           // 任务的优先级       );   }}
时间: 2024-08-05 15:24:25

pheanstalk put 延时队列的相关文章

C实现的延时队列设计

仿的live555 C++的延时队列 #include <rtthread.h> extern struct dqueue_ops dqops;struct dqueue_entry{ rt_tick_t s_time; void *pframe; struct dqueue_entry *pnext;}; struct dqueue_handle{ struct dqueue_entry priv; rt_uint8_t s_init; rt_uint8_t s_size; rt_tick_

RabbitMQ:伪延时队列

目录 一.什么是延时队列 二.RabbitMQ实现 三. 延时队列的问题 四.解决RabbitMQ的伪延时方案 ps:伪延时队列先卖个关子,我们先了解下延时队列. 一.什么是延时队列 所谓延时队列是指消息push到队列后,监听的消费者不能第一时间获取消息,需要等到指定时间才能消费. 一般在业务里面需要对某些消息做定时发送,不想走定时任务或者是用户下单之后多长时间自动失效类似的场景可以考虑通过延时队列实现. 二.RabbitMQ实现 MQ本身并不支持直接的延时队列实现,但是我们可以通过Rabbit

springboot-rabbitmq:实现延时队列

延时队列应用于什么场景 延时队列顾名思义,即放置在该队列里面的消息是不需要立即消费的,而是等待一段时间之后取出消费.那么,为什么需要延迟消费呢?我们来看以下的场景 网上商城下订单后30分钟后没有完成支付,取消订单(如:淘宝.去哪儿网)    系统创建了预约之后,需要在预约时间到达前一小时提醒被预约的双方参会    系统中的业务失败之后,需要重试 这些场景都非常常见,我们可以思考,比如第二个需求,系统创建了预约之后,需要在预约时间到达前一小时提醒被预约的双方参会.那么一天之中肯定是会有很多个预约的

基于rabbitMQ 消息延时队列方案 模拟电商超时未支付订单处理场景

前言 传统处理超时订单 采取定时任务轮训数据库订单,并且批量处理.其弊端也是显而易见的:对服务器.数据库性会有很大的要求,并且当处理大量订单起来会很力不从心,而且实时性也不是特别好 当然传统的手法还可以再优化一下,即存入订单的时候就算出订单的过期时间插入数据库,设置定时任务查询数据库的时候就只需要查询过期了的订单,然后再做其他的业务操作 jdk延迟队列 DelayQueue 采取jdk自带的延迟队列能很好的优化传统的处理方案,但是该方案的弊.端也是非常致命的,所有的消息数据都是存于内存之中,一旦

RabbitMq 实现延时队列-Springboot版本

rabbitmq本身没有实现延时队列,但是可以通过死信队列机制,自己实现延时队列: 原理:当队列中的消息超时成为死信后,会把消息死信重新发送到配置好的交换机中,然后分发到真实的消费队列: 步骤: 1.创建带有时限的队列 dealLineQueue; 2.创建死信Faout交换机dealLineExchange; 3.创建消费队列realQueue,并和dealLineExchange绑定 4.配置dealLineQueue 的过期时间,消息过期后的死信交换机,重发的routing-key: 以下

一篇详解Redis -- 延时队列

Redis的 list 数据结构常用来作为 异步消息队列 使用,使用 rpush/lpush 操作 入队 ,使用 lpop/rpop 来操作 出队 > rpush my-queue apple banana pear (integer) 3 > llen my-queue (integer) 3 > lpop my-queue "apple" > llen my-queue (integer) 2 > lpop my-queue "banana&

spring cloud延时队列的使用

用户购买一笔订单,需要在订单的有效截止时间前一定时间,提醒用户去使用.到达有效结束时间,将订单设置为失效.这时候可以用延时队列可以很好的解决,用户下单之后,在有效期前发送一条提醒用户去使用的消息,和一条订单已经失效的消息. 入口 /** * 爆品助力状态提醒 * * @param req 爆品助力失败 */ @RequestMapping(path = "/mq/product/sendProductHelpStatusMessage", method = RequestMethod.

4.【Redis系列】Redis的高级应用-延时队列

原文:4.[Redis系列]Redis的高级应用-延时队列 我们习惯于用rabbitmq和kafka作为消息中间件,来给应用之间增加异步的能力.但是使用过的同学都知道,使用专业的消息中间件使用起来非常复杂,我们实现一个简单的功能都需要大量的操作.有了redis,可以让我解脱出来,使用redis可以非常轻松的搞定,Redis的消息队列不是专业的消息中间件,没有非常高级的特性,如果对消息的可靠性有极高的追求,那么redis的消息中间件可能不适合. 异步消息队列 Redis的列表可以用来处理消息队列,

RabbitMQ实现延时队列(死信队列)

基于队列和基于消息的TTL TTL是time to live 的简称,顾名思义指的是消息的存活时间.rabbitMq可以从两种维度设置消息过期时间,分别是队列和消息本身. 队列消息过期时间-Per-Queue Message TTL: 通过设置队列的x-message-ttl参数来设置指定队列上消息的存活时间,其值是一个非负整数,单位为微秒.不同队列的过期时间互相之间没有影响,即使是对于同一条消息.队列中的消息存在队列中的时间超过过期时间则成为死信. 死信交换机DLX 队列中的消息在以下三种情况