用Symfony2变得咄咄逼人!ob娱乐下载
本案例研究是由Keith Kirk撰写的客座文章
地下的大象。想让你的公司出现在Symfony官方博客上?ob娱乐下载
请将建议或案例研究发送至fabien.potencier@sensiolabs.com
消息队列不是一个新概念——推送通知和消息队列也不是
当然不是HTTP post。然而,当你把这些想法结合起来
你有一个非常灵活的排队系统。
撒一点Symfony'sob娱乐下载EventDispatcher
...突然你的
ob娱乐下载Symfony应用程序的响应能力开始大大提高。那感觉
太好了。
引导
地下的大象是一家在线绩效营销公司,为客户提供客户获取软件。我们一直在权衡托管我们自己的服务和使用基于云的替代方案的好处。ob直播app通常情况下,在快节奏的环境中,我们有比管理、扩展和维护简单服务更重要的事情要做,这些服务虽然很重要,但并不是我们业务的核心。
所以,当我们想办法提高我们的反应能力时
ob娱乐下载Symfony2应用程序和移动非必要的进程到后台,我们
开始探索作业队列和消息传递。
不可否认,启动RabbitMQ或ØMQ实例并不难
编写一个脚本,使套接字保持打开状态,等待新消息。
坦白地说,我想我们只是不想这么做。这是另一个移动的部分
我的团队必须在他们的应用程序之外进行维护
部署中的依赖项和基础设施。
异步排队吃蛋糕
我想要的是保持我的依赖轻和代码-维护作曲家.我想要一种方法将我的工作代码编写为内部的简单服务
我的Sob娱乐下载ymfony应用程序-所有维护在相同的存储库和
部署也很容易。
我希望队列具有持久性,并且在发生错误时具有一定的故障转移级别。我
想要不干涉规模和分销——我真的想要另一个人
去管理它。
所以,实际上我想要很多。
进入ob娱乐下载Symfony2 QPush Bundle,集成IronMQ、铁。io的云ob直播app
消息队列作为服务。
该包将推送队列提供程序直接集成到Symfony中ob娱乐下载
应用程序,允许您创建和管理多个队列。用户是
可配置的,每个队列允许不同和/或多个订阅者。
您可以轻松地发布消息
1 2 3 4 5 6 7 8 9
/ / src /我的/包/ ExampleBundle /控制器/ MyController.php公共函数publishAction(){$消息=数组(“foo”= >“酒吧”);//从容器中获取你的提供商服务$这->get (“uecode_qpush”)->get (“my_queue_name”)->发布($消息);}
捆绑包利用EventDispatcher要发送MessageEvent
当从队列接收到已发布的消息时。您的服务是基于简单的标记自动调用的,这为链接服务或在单个服务中处理多个队列提供了很大的灵活性。
因为它利用了Symfony中的简单服务,所以重用现有代码非常容易。ob娱乐下载对我们来说,这让领养变得非常容易。
处理服务中的事件
12 3 4 5 6 7 8 9 10 11 12 13
/ / src /我/包/ ExampleBundle /服务/ ExampleService.php使用Uecode\包\QPushBundle\事件\MessageEvent;使用Uecode\包\QPushBundle\消息\消息;公共函数onMessageReceived(MessageEvent$事件){$id=$事件->getMessage ()->getId ();$身体=$事件->getMessage ()->getBody ();$元数据=$事件->getMessage ()->getMetadata ();//做一些处理}
看看的文档欧宝官网下载app有关如何将其合并到应用程序中的更多信息。
推送队列太棒了!
推送队列可能不适合所有人,也不适合每个用例,但它们有很多优点。
您知道您的队列没有被大量利用,但尽快处理每条消息是非常重要的?是的,就是你在凌晨3点的5秒间隔内进行投票,而你正处于一天中最沉重的时刻。通过直接向应用程序推送通知,可以消除浪费的计算、浪费的API调用和浪费的金钱。
不再有daemon,不再有cron。
特别是对于PHP,线程一直是一个痛点(即“不存在”)。然而,使用推送队列,你可以利用你的web服务器(Apache, Nginx等)来为你处理线程。这也意味着你可以通过注册更多的订阅者或利用负载均衡器后面的web服务器集群来轻松地横向扩展。
结束
QPush Bundle是开源的,可以公开使用。我们也非常欢迎您的贡献和反馈。如果您有任何问题,请访问我们的网站github.com/uecode/qpush-bundle!
评论
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
Tobias Nyholm is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now我写了一篇博客文章,其中的主体是一样的,但你自己主持队列和队列工作人员。http://developer.happyr.com/real-asynchronous-events-with-ob娱乐下载symfony2