我最近一直在阅读消息排队,我想为我的应用程序实现一个简单,可扩展的系统.虽然关于设置MQ系统的主题有很多很好的信息,但我找不到很多关于实际实现的信息.
我正在寻找关于如何正确格式化队列消息的模式和最佳实践,以及在PHP中执行作业的方法.我应该使用JSON,序列化对象,文本,URL还是XML?我应该发送什么信息?是一个有switch($job['command']) {}
(或类似的东西)的工人要走的路,或者是否有任何已建立的模式来实现工人?
非常感谢!
您可以在PHP中选择以下任何MQ实现,因此您不必自己动手,您可以查看其源代码以了解它们的实现.对于常规集成,请查看Enterprise Integration模式上的ActiveMQ页面.
http://sourceforge.net/projects/beanstalk/
beanstalkd的PHP客户端库.BeanStalk允许PHP开发人员使用beanstalkd内存中的工作队列服务器(http://xph.us/software/beanstalkd).
http://kr.github.com/beanstalkd/
Beanstalk是一种简单,快速的工作队列服务.它的界面是通用的,但最初设计用于通过异步运行耗时的任务来减少高容量Web应用程序中页面视图的延迟.
http://activemq.apache.org/
Apache ActiveMQ是最流行和最强大的开源消息传递和集成模式提供程序.Apache ActiveMQ速度快,支持许多跨语言客户端和协议,带有易于使用的企业集成模式和许多高级功能,同时完全支持JMS 1.1和J2EE 1.4.Apache ActiveMQ是在Apache 2.0许可下发布的
http://memcachedb.org/memcacheq/
Memcachedb是一个专为持久性而设计的分布式键值存储系统.它不是缓存解决方案,而是用于高频写入和读取的持久存储.它符合memcache协议(未完成,见下文),因此任何memcached客户端都可以与它连接.Memcachedb使用Berkeley DB作为存储后端,因此支持许多功能,包括事务和复制.
http://www.zend.com/en/products/server/
Zend Server 5.0集成了作业队列,为创建,执行和管理作业提供全面支持,以优化应用程序性能并减少服务器负载,最大限度地减少应用程序瓶颈并改善最终用户体验.
https://www.dropr.org/
dropr是一个用PHP编写的分布式消息队列框架.主要目标是:
可靠耐用(故障安全) - 通过网络进行消息传递
没有单个(故障点)服务器实例的分散式架构
易于安装和使用
队列存储和消息传输的模块化(目前实现文件系统存储和卷曲上传)
http://gearman.org/
Gearman提供了一个通用的应用程序框架,可以将工作分配给更适合工作的其他机器或进程.它允许您并行工作,负载均衡处理以及在语言之间调用函数.
http://www.zeromq.org/
ØMQ(也称为ZeroMQ,0MQ或ZMQ)是一个高性能的异步消息库,旨在用于可扩展的分布式或并发应用程序.它提供了一个消息队列,但与面向消息的中间件不同,ØMQ系统可以在没有专用消息代理的情况下运行.该库旨在具有熟悉的套接字式API.