cog/stupidmqbundle

此包已废弃,不再维护。未建议替代包。

sf2的stupid消息队列包

2.4.7 2014-08-08 13:52 UTC

README

支持将stupidMessageQueue集成到Symfony应用程序的包。

安装

将需求添加到你的 composer.json 文件中

"cog/stupidmqbundle":"2.4.*"

然后在 app/AppKernel.php 中启用此包

new CoG\StupidMQBundle\CoGStupidMQBundle()

可选的,如果你使用Doctrine Orm,你可以用它轻松安装消息队列表

php app/console doctrine:schema:update --force

此命令将为您创建一个新的表 cog_stupidmq 用于存储您的消息。

创建消息队列

编辑你的 services.xml 以添加你自己的队列

<!-- Messages Queues -->
<service id="my.queue" class="%cog_stupidmq.queue.class%">
    <argument type="service" id="cog_stupidmq.channel" />
    <argument>my.queue</argument>
    <tag name="cog_stupidmq.queue"/>
</service>

将消息添加到队列中

$queue = $this->getContainer()->get('my.queue');
$queue->publish('This is a message !');

添加工作进程

要消费消息,你必须创建一个工作进程类,如下所示

<?php

namespace My\Bundle\Worker;

use CoG\StupidMQBundle\Worker\WorkerInterface;

class MyWorker implements WorkerInterface
{
    public function execute( $message ) {
        var_dump($message);
        /* you ca give a feedback using \CoG\StupidMQBundle\Feeback\Feedback */
        return Feedback::create(
            MessageInterface::STATE_DONE,
            'here is my feedback'
        );

        /* or just return a boolean */
        return true;
    }

    public function getSubscribedQueues() {
        return array(
            'my.queue'
        );
    }

    public function getName() {
        return 'my.worker';
    }
}

然后你应该注册你的工作进程,编辑你的 services.xml

<!-- Message Worker -->
<service id="my.worker" class="My\Bundle\Worker\MyWorker">
    <tag name="cog_stupidmq.worker"/>
</service>

运行命令

StupidMQBundle附带了处理消息的有用命令

$ php app/console cog:stupidmq:watch -m1

这些命令将监视你的队列,直到有消息需要处理,然后它会运行一个子进程来处理它。

命令帮助

$ php app/console cog:stupidmq:watch --help