消息队列
产生消息
$redis LPUSH queue $message
消费消息
set message [$redis LPOP queue]
dispatch $message
容错处理
set message [$redis LPOP queue]
try {
dispatch $message
} on error err {
$redis LPUSH queue $message
}
RPOPLPUSH
set message [$redis RPOPLPUSH queue processing]
dispatch $message
$redis LREM queue 0 $message
cron idle {
purge queue processing
}
用 MySql 实现消息队列
CREATE TABLE task_queue (
created_at DATETIME,
updated_at DATETIME,
retry_times INT,
message TEXT
)
SELECT * FROM task_queue
WHERE 1
ORDER BY created_at ASC
LIMIT 1