我正在尝试使用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>
我的问题是:我的配置或代码出了什么问题?
答案 0 :(得分:1)
无需将处理程序注册为服务 - 完全删除My \ ApiBundle \ Resources \ config \ services.xml定义可以解决问题。
答案 1 :(得分:1)
我正在处理同样的问题。问题是我忘了包含RabbitMQ配置文件。
您可以将您的解决方案与我的工作存储库进行比较:
答案 2 :(得分:0)
我不确定文档是否正确..但我找到了一种解决方法,从OldSound\RabbitMqBundle\RabbitMq\BaseConsumer
延伸
所以我的代码如下:
namespace My\ApiBundle\Service;
use OldSound\RabbitMqBundle\RabbitMq\BaseConsumer;
class ConsumerService extends BaseConsumer
{
}