bien ... prueba este sencillo ejemplo
# app/config.yml
old_sound_rabbit_mq:
connections: %rabbitmq_connections%
producers: %rabbitmq_producers%
consumers: %rabbitmq_consumers%
parameters:
# connection parameters
rabbitmq_connections:
default: { host: 'localhost', port: 5672, user: 'guest', password: 'guest', vhost: '/' }
# define producers
rabbitmq_producers:
sample:
connection: default
exchange_options: {name: 'exchange_name', type: direct, auto_delete: false, durable: true}
# define consumers
rabbitmq_consumers:
sample:
connection: default
exchange_options: {name: 'exchange_name', type: direct, auto_delete: false, durable: true}
queue_options: {name: 'sample', auto_delete: false}
callback: rabbitmq.callback.service
entonces usted debe definir su servicio de devolución de llamada. no dude en ponerlo en app/config.yml
services:
rabbitmq.callback.service:
class: RabbitMQ\Callback\Service
y sí. deberías escribir este servicio de devolución de llamada. aquí hay una implementación simple. debería ser suficiente para entender y verificar si funciona para usted.
namespace RabbitMQ\Callback;
use OldSound\RabbitMqBundle\RabbitMq\ConsumerInterface;
use PhpAmqpLib\Channel\AMQPChannel;
use PhpAmqpLib\Message\AMQPMessage;
class Service implements ConsumerInterface
{
public function execute(AMQPMessage $msg)
{
var_dump(unserialize($msg->body));
}
}
, entonces debería iniciar el servidor de rabbitmq, ejecutar el consumidor y verificar que se haya agregado el nuevo intercambio y la cola. para ejecutar consumidor prueba se debe ejecutar
app/console rabbitmq:consumer sample --route="sample"
en su controlador (en la que desea enviar el mensaje a RabbitMQ poner al lado de código
# get producer service
$producer = $this->get('old_sound_rabbit_mq.sample_producer');
# publish message
$producer->publish(serialize(array('foo'=>'bar','_FOO'=>'_BAR')), 'sample');
espero que sea más o menos clara y se le ayudará con RabbitMQ.
PS:. es más fácil de depurar si tiene plug-in de gestión RabbitMQ si no tiene, usar comandos de consola como rabbitmqctl
para comprobar las colas/intercambios/consumidores y así sucesivamente ...
y también sería bueno ver su configuración para productores/consumidores. código de servicios de devolución de llamada también.
Todo estaba bien en mi código pero tuve que ejecutar el consumo por un tiempo y luego todo fue bien. Gracias. –