gearman+mysql实现持久化队列

网友投稿 635 2023-02-15

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

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删除掉了
上一篇:运维风险事件心得(运维心得体会)
下一篇:LINUX下基于LDAP集中系统用户认证系统
相关文章

 发表评论

暂时没有评论,来抢沙发吧~