Opiniated and simple message broker interface along with a few implementations

2.0.4 2023-02-14 13:42 UTC

This package is auto-updated.

Last update: 2024-05-08 14:59:33 UTC


Opiniated and simple message broker interface along with a PostgreSQL working and stable implementation.

This package alone may probably not useful for many, please consider using it along the makinacorpus/corebus package, which add meaningful opiniated bus logic around.

This implementation was extracted from makinacorpus/goat and is stable.


First of all, install this package:

composer install makinacorpus/message-broker

It is also recommended to chose an UUID implementation:

composer install ramsey/uuid


composer install symfony/uid

Our favorite remains ramsey/uuid.


Start by installing the makinacorpus/goat-query-bundle Symfony bundle if you with to use the PostgreSQL implementation:

composer install makinacorpus/goat-query-bundle

And configure it as documented.

Then register the bundle into your config/bundles.php file:


return [
    // ... Your other bundles.
    MakinaCorpus\MessageBroker\Bridge\Symfony\MessageBrokerBundle::class => ['all' => true],

Important note: using Symfony and the goat-query implementation, the message broker will default on the goat.runner.default default database connection.

If you need to setup another connection, simply add into the config/goat_query.yaml file:

    # Overrides the one from this bundle.
        alias: goat.runner.my_message_broker_connection

        # ... Your other connections, then:

        # Your dedicated connection.
            url: '%env(resolve:DATABASE_URL_MESSAGE_BROKER)%'

This library may evolve later to allow multiple message brokers to co-exist in container, one for each queue, case in which environment variables will become the primary place for configuring.

Another important note: using Symfony and the goat-query implementation, message broker instance will always be registered with the queue named default.

This will be configurable someday, it just isn't right now.


This is not documented yet, but basically only thing you need to do is to create an instance implementing MessageBroker.

PostgreSQL schema

If you are going to use the PostgreSQL implementation, please create the necessary database tables in your default schema, please see the src/Adapter/GoatQuery/ file.


This is not documented yet.

Run tests

A docker environement with various containers for various PHP versions is present in the sys/ folder. For tests to work in all PHP versions, you need to run composer update --prefer-lowest in case of any failure.

composer install
composer update --prefer-lowest
cd sys/
./ # Run this only once

Additionnaly generate coverage report:


HTML coverage report will be generated in coverage folder.