Skip to content
This repository has been archived by the owner on Jan 26, 2024. It is now read-only.

This Bundle overrides some services of the RabbitMqBundle, so it behave synchronously, enabling easy functional testing.

Notifications You must be signed in to change notification settings

nclavaud/RabbitMqSynchronizerBundle

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

RabbitMqSychronizerBundle

About

When using asynchronous messaging system such as RabbitMQ, it's rather difficult to use functional tests to see if your messages are correctly published and consumed, and test the overall behaviour of your application.

This bundle tranforms the RabbitMq broker provided by the RabbitMqBundle into a Symfony2 synchronous event dispatcher, thus enabling easy testing, using functional test frameworks (such as Behat).

Installation

Require the bundle in you composer.json file :

{
    require-dev: {
        "kimlai/rabbitmq-synchronizer-bundle": "*@dev"
    }
}

Register the bundle :

//app/AppKernel.php

public function registerBundles()
{
    if (in_array($this->getEnvironment(), array('dev', 'test'))) {
        $bundles[] = new Lrqdo\Bundle\RabbitMqSynchronizerBundle\LrqdoRabbitMqSynchronizerBundle();
    }
}

Install the bundle :

$ php composer.phar update kimlai/rabbitmq-synchronizer-bundle

Usage

You don't need to change anything in you rabbitmq config, you can keep using Producers and Consumers just like you did before.

When you're running you app in the dev or test environment, the bundle will create a new service named lrqdo.rabbitmq-synchronizer.broker. This is the service that replaces the actual RabbitMQ broker.

Then it looks for all services with the tags old_sound_rabbit_mq.producer or old_sound_rabbit_mq.consumer, and replaces them with custom instances, providing all the necesary plumbing so that the app behaves exactly like it did before, only in a synchronous way.

Once this is done, when your producers publish messages on a topic, the consumers are executed synchronously from within Symfony, just like any EventListener.

About

This Bundle overrides some services of the RabbitMqBundle, so it behave synchronously, enabling easy functional testing.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%