首页 » Web前端 » beanstalkphp扩大技巧_轻量级消息队列beanstalkd

beanstalkphp扩大技巧_轻量级消息队列beanstalkd

访客 2024-12-06 0

扫一扫用手机浏览

文章目录 [+]

tube:一个行列步队,用来存放job,相称于一个主题(topic),是producer和consumer操作的工具

producer:生产者,发布任务的人,通过put命令来将一个job放到一个tube中

beanstalkphp扩大技巧_轻量级消息队列beanstalkd

consumer:消费者,处理任务的人,通过reserve/release/bury/delete命令来获取job或改变job的状态

beanstalkphp扩大技巧_轻量级消息队列beanstalkd
(图片来自网络侵删)
流程:

producer生产出一个job,放在tube中,consumer监听着tube,一旦有job任务,就将其取出进行业务处理,然后改变job的状态

Job的四种状态:

ready:生产者put一个job后,job便是ready,表示该job随时可以被消费者消费

reserved:job正在被处理

delayed:job被延迟,延迟韶光到了之后,job将变成ready状态供消费者消费

buried:job任务由于某些条件限定而被暂放一边,等条件知足再连续处理

特性

优先级:支持设置job的优先级,值越小,优先级越高,默认优先级为1024

持久化:可以通过binlog将job及其状态记录到文件里面,在Beanstalkd下次启动时可以通过读取binlog来规复之前的job及状态。

超时掌握:为了防止某个consumer永劫光占用任务但不能处理的情形,Beanstalkd为reserve操作设置了timeout韶光,如果该consumer不能在指定时间内完成job,job将被迁移回READY状态,供其他consumer实行

不敷

在利用中创造一个Beanstalkd尚无供应删除一个tube的操作,只能将tube的job依次删除,并让Beanstalkd来自动删除空tube

Beanstalkd不支持客户端认证机制,开拓者将运用处景定位在局域网

安装与利用

ubuntu安装beanstalkd

apt-get install beanstalkd1

启动

beanstalkd -l 127.0.0.1 -p 11300 -b /var/log/beanstalkd/binlog1

-b 参数置顶binlog文件路径,断电后重启会自动规复任务。

也可以利用/etc/init.d/beanstalkd 来启动和查看beanstalkd进程状态等

Usage: /etc/init.d/beanstalkd {start|stop|force-stop|restart|force-reload|status}1

配置文件所在:

/etc/default/beanstalkd1

php操作beanstalkd

php操作beanstalkd可以利用pheanstalk

composer安装pheanstalk

composer require pda/pheanstalk1

github源码地址:pheanstalk

大略例子:

<?phprequire'vendor/autoload.php';

use Pheanstalk\Pheanstalk;

$pheanstalk=new Pheanstalk('127.0.0.1');

// ----------------------------------------

// 生产一个job,放入testtube这个tube中

$pheanstalk->useTube('testtube')

->put(\"大众job payload goes here\n\"大众);

// ----------------------------------------

// 消费者监听testtube这个tube,

$job=$pheanstalk->watch('testtube')

->ignore('default')

->reserve();

//此处进行业务处理

echo $job->getData();

//业务处理成功后删除job

$pheanstalk->delete($job);

在实际开拓中,生产者和消费者肯定是分开的,这里只是为了大略演示以是写在一个文件中

reserve()方法是壅塞的,在实际开拓中,可以在while循环中利用reserve()方法持续监听,一有任务就实行,如:

while(true){ $job = $pheanstalk ->watch('testtube') ->reserve(); //此处进行业务处理 }beanstalk管理工具

beanstalk_console (github自行搜索)

支配并访问这个管理工具,如果报了nginx 502 gateway 的缺点,可考试测验以下办理方案:

打开lib/include.php,删除或注释 Pheanstalk_ClassLoader::register(dirname(__FILE__));

标签:

相关文章

向下移,一场深刻的自我革新之旅

在人类的历史长河中,变革与发展始终如影随形。在这个日新月异的时代,我们常常被无尽的追求与竞争所困扰,忽略了内心的声音。此时,向下移...

Web前端 2024-12-25 阅读0 评论0

VCL易语言,开启编程新纪元的编程语言

随着科技的飞速发展,编程已经成为现代社会不可或缺的一部分。而在众多的编程语言中,VCL易语言凭借其独特的优势,逐渐成为了编程新纪元...

Web前端 2024-12-25 阅读0 评论0

台山,魅力之城,探索这座网站的独特魅力

台山,这座位于广东省江门市下辖的县级市,拥有着丰富的自然资源和悠久的历史文化。近年来,随着互联网的普及,台山也开始打造自己的官方网...

Web前端 2024-12-25 阅读0 评论0

合同代码库,构建高效合同管理的基石

随着市场经济的发展,合同在商业交易中的地位日益重要。合同代码库作为一种高效、规范、便捷的合同管理工具,在提高合同管理效率、降低法律...

Web前端 2024-12-25 阅读0 评论0

QQ2秒语言,社交新时代的便捷沟通工具

随着互联网的飞速发展,社交软件已成为人们日常生活中不可或缺的一部分。近年来,QQ作为一款备受欢迎的社交工具,在原有的基础上不断创新...

Web前端 2024-12-25 阅读0 评论0