消费者RabbitMQ symfony2不起作用

时间:2015-08-07 10:37:30

标签: php symfony rabbitmq

在我开发的Symfony 2.7应用程序中,我需要使用RabbitMQ数据。 我安装RabbitMQBundle并且很好,但是当我尝试使用时,我收到以下错误

 [PhpAmqpLib\Exception\AMQPProtocolChannelException]
 ACCESS_REFUSED - access to exchange 'options' in vhost '/' refused for user 'user'

config.yml:

 old_sound_rabbit_mq:
    connections:
      default:
        host:     'my-url'
        port:     5672
        user:     'user'
        password: 'pass'
        vhost:    '/'
        lazy:     false
        connection_timeout: 3
        read_write_timeout: 3

        # requires php-amqplib v2.4.1+ and PHP5.4+
        keepalive: false

        # requires php-amqplib v2.4.1+
        heartbeat: 0
  consumers:
    read_node:
        connection:       default
        exchange_options: { name: 'options', type: direct}
        queue_options:    { name: 'options' }
        callback:         process_node

services.yml:

 services:
     process_node:
        class: AppBundle\Consumer\RabbitConsumer

RabbitConsumer.php

  namespace AppBundle\Consumer;

 use OldSound\RabbitMqBundle\RabbitMq\ConsumerInterface;
 use PhpAmqpLib\Message\AMQPMessage;

 class RabbitConsumer implements ConsumerInterface{


    public function execute(AMQPMessage $msg) {
        return false;
    }

}

console命令:

  php ./app/console rabbitmq:consumer read_node

我制作了一个纯PHP脚本并正常工作 我希望有人可以帮助我

1 个答案:

答案 0 :(得分:1)

如果您没有更改rabbitmq的默认用户设置,则必须将用户和密码更改为“guest”和“guest”。

否则,您需要在rabbitmq中创建一个名为“user”的新用户,并将密码设置为“pass”,以便您粘贴的代码可以正常工作。但我建议你把它改成合情合理的东西。

更改用户:

rabbitmqctl change_password tonyg newpass

添加用户:

add_user {username} {password}`

More info on the manual page of rabbitmq