The bundle integrates OroMessageQueue component. It adds easy to use configuration layer, register services and tie them together, register handy cli commands.
First, you have to configure a transport layer and set one to be default.
# app/config/config.yml
oro_message_queue:
transport:
default: amqp
amqp: { host: 'localhost', port: 5672, user: 'guest', password: 'guest', vhost: '/' }
client: ~Once you configured everything you can start producing messages:
<?php
/** @var Oro\Component\MessageQueue\Client\MessageProducer $messageProducer **/
$messageProducer = $container->get('oro_message_queue.client.message_producer');
$messageProducer->sendTo('aFooTopic', 'Something has happened');To consume messages you have to first create a message processor:
<?php
use Oro\Component\MessageQueue\Consumption\MessageProcessor;
class FooMessageProcessor implements MessageProcessor
{
public function process(Message $message, Session $session)
{
echo $message->getBody();
return self::ACK;
}
}Register it as a container service and subscribe to the topic:
orocrm_channel.async.change_integration_status_processor:
class: 'FooMessageProcessor'
tags:
- { name: 'oro_message_queue.client.message_processor', topicName: 'aFooTopic' }Now you can start consuming messages:
./app/console oro:message-queue:consume -vvv