从命令行调用Rabbitmq使用者时出错

时间:2013-05-21 09:37:51

标签: symfony rabbitmq amqp

我正在尝试使用Symfony2.2和RabbitMq bundle设置一个简单的AMQP发布者/消费者,我正在关注捆绑页面上的文档

发布商工作正常,我可以在rabbitMq的网络管理员上看到我的消息。 当我尝试使用命令

运行消费者时
php app/console rabbitmq:consumer my.api

我收到以下错误:

Call to undefined method My\ApiBundle\Service\ConsumerService::setRoutingKey() in /***/vendor/oldsound/rabbitmq-bundle/OldSound/RabbitMqBundle/Command/BaseConsumerCommand.php on line 91

我的设置:

confi.yml

old_sound_rabbit_mq:
    connections:
        my.api:
        host:      %amqp_host%
        port:      %amqp_port%
        user:      %amqp_user%
        password:  %amqp_password%
        vhost:     %amqp_vhost%
    producers:
        my.api:
            connection: my.api
            exchange_options: {name: 'my.api', type: fanout}
    consumers:
        my.api:
            connection: my.api
            exchange_options: {name: 'my.api', type: fanout}
            queue_options:    {name: 'my.api'}
            callback:         my.api

我\ ApiBundle \服务\ ConsumerService.php

namespace My\ApiBundle\Service;

use OldSound\RabbitMqBundle\RabbitMq\ConsumerInterface;

class ConsumerService implements ConsumerInterface
{
    public function execute(\PhpAmqpLib\Message\AMQPMessage $msg)
    {
        return false;
    }
}

我\ ApiBundle \资源\配置\ services.xml中

<?xml version="1.0" encoding="UTF-8"?>
<container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
    <services>
        <service id="old_sound_rabbit_mq.my.api_consumer" class="My\ApiBundle\Service\ConsumerService"></service>
    </services>
</container>

我的问题是:我的配置或代码出了什么问题?

3 个答案:

答案 0 :(得分:1)

无需将处理程序注册为服务 - 完全删除My \ ApiBundle \ Resources \ config \ services.xml定义可以解决问题。

答案 1 :(得分:1)

我正在处理同样的问题。问题是我忘了包含RabbitMQ配置文件。

您可以将您的解决方案与我的工作存储库进行比较:

https://github.com/petrvacha/rebbitmq-basic

答案 2 :(得分:0)

我不确定文档是否正确..但我找到了一种解决方法,从OldSound\RabbitMqBundle\RabbitMq\BaseConsumer延伸

所以我的代码如下:

namespace My\ApiBundle\Service;

use OldSound\RabbitMqBundle\RabbitMq\BaseConsumer;

class ConsumerService extends BaseConsumer
{

}