bene ... Provate questo semplice esempio
# 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
allora si dovrebbe definire il servizio di richiamata. sentitevi liberi di mettere in app/config.yml
services:
rabbitmq.callback.service:
class: RabbitMQ\Callback\Service
e sì. dovresti scrivere questo servizio di callback. ecco una semplice implementazione. dovrebbe essere sufficiente per capire e verificare che funzioni per te
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));
}
}
allora si dovrebbe avviare il server RabbitMQ, consumatori e controllo corsa era nuovo scambio e la coda ha aggiunto. per eseguire test presso i consumatori è necessario eseguire
app/console rabbitmq:consumer sample --route="sample"
nel controller (in cui si desidera inviare un messaggio a RabbitMQ inserire codice successivo
# get producer service
$producer = $this->get('old_sound_rabbit_mq.sample_producer');
# publish message
$producer->publish(serialize(array('foo'=>'bar','_FOO'=>'_BAR')), 'sample');
Spero che sia più o meno chiaro e vi aiuterà con RabbitMQ.
PS:. e 'più facile per eseguire il debug se si dispone di plug-in gestione RabbitMQ se non avete, i comandi della console l'uso come rabbitmqctl
per controllare le code/scambi/consumatori e così via ...
e sarebbe bello vedere la tua configurazione per produttori/consumatori. anche il codice dei servizi di callback.
Tutto andava bene nel mio codice ma dovevo eseguire il consumer per un po 'e poi tutto è andato bene. Grazie. –