AIOps 一场颠覆传统运维的盛筵
635
2023-02-15
gearman+mysql实现持久化队列
持久化队列是在0.6版本中新添的一项功能,允许将队列存放在drizzle或mysql中。
0.9版本可以将队列存放在sqlite3或postgresql。
在gearman job服务器内部,所有的job队列都是存放在内存中的,这就意味着一旦服务器重启或崩溃,未执行的job将会丢失而不会被worker服务器执行。
持久化队列将后台作业存放在一个外部持久的队列中。持久化队列只对后台jobs有效,因为前台jobs依附于客户端。如果job服务器挡掉了,客户端会检测到,将会从其他地方重新启动这个前台job或者返回错误。而后台jobs没有依附于客户端,如果要想让它运行则需要提交。
创建数据库和表
1 2 3 4 5 6 7 8 | create database gearman create table`gearman_queue`( `unique_key`varchar(64)NOTNULL, `function_name`varchar(255)NOTNULL, `priority`int(11)NOTNULL, `data`LONGBLOB NOTNULL, `when_to_run`INT,PRIMARY KEY (`unique_key`) ) |
启动gearmand
1 | gearmand-qlibdrizzle--libdrizzle-host=127.0.0.1--libdrizzle-user=gearman--libdrizzle-password=password--libdrizzle-db=gearman--libdrizzle-table=gearman_queue--libdrizzle-mysql |
创建一个后台job
1 | gearman-ftestqueue-bxx00 |
查看队列
1 | select *from gearman.gearman_queue |
执行队列中的job
1 | gearman-ftestqueue-w |
查看队列
1 | select *from gearman.gearman_queue //这条job删除掉了 |
发表评论
暂时没有评论,来抢沙发吧~