gdx/p-service-bus-symfony-bundle

PServiceBus

Maintainers

👁 GDX

Package info

gitlab.com/gdx-open/pservicebus-symfony-bundle

Issues

Type:symfony-bundle

pkg:composer/gdx/p-service-bus-symfony-bundle

Statistics

Installs: 23 445

Dependents: 0

Suggesters: 0

Stars: 0

3.8.3 2026-05-27 08:28 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 0d4e65edbfc33a1f3a34427d0426404be01e7d8f

  • Sergei Baikin <gdx.woop@yandex.com>

README

Telegram group: https://t.me/PServiceBus

For library https://gitlab.com/GDXbsv/pservicebus

Symfony: https://packagist.org/packages/gdx/p-service-bus-symfony-bundle

Laravel: https://packagist.org/packages/gdx/p-service-bus-laravel-package

As example for config please look in TestApp folder: https://gitlab.com/GDXbsv/pservicebus-symfony-bundle/-/tree/master/TestApp

Example initialization file config/packages/p-service-bus.php:

<?php declare(strict_types=1);

use GDXbsv\PServiceBus\Bus\ConsumeBus;
use GDXbsv\PServiceBus\Transport\InMemoryTransport;
use GDXbsv\PServiceBus\Transport\Sns\SnsSqsTransport;
use GDXbsv\PServiceBus\Transport\Sqs\SqsTransport;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use function Symfony\Component\DependencyInjection\Loader\Configurator\inline_service;
use function Symfony\Component\DependencyInjection\Loader\Configurator\service;

return static function (ContainerConfigurator $containerConfigurator): void {
 $containerConfigurator->extension(
 'p_service_bus',
 [
 'transports' => [
 'memory' => InMemoryTransport::class,
 'external' => SnsSqsTransport::class,
 'example_name_for_transport' => 'app.service_bus.transport.example_sqs',
 'example_name_for_transport2' => 'app.service_bus.transport.example_sqs2',
 ],
 'transport_groups' => [
 'example_group' => ['example_name_for_transport', 'example_name_for_transport2'],
 ],
 ]
 );

 $s = $containerConfigurator->services();

 $s->defaults()
 ->autowire()
 ->autoconfigure();

 $s->set(InMemoryTransport::class)
 ->call('setBus', [service(ConsumeBus::class)]);
 $s
 ->set(SnsSqsTransport::class)
 ->factory([SnsSqsTransport::class, 'ofDsn'])
 ->arg('$dsnString', '%env(SNS_DSN)%')
 ->arg('$sqsTransport', inline_service(SqsTransport::class)
 ->factory([SqsTransport::class, 'ofDsn'])
 ->arg('$dsnString', '%env(SQS_DSN)%&queue=core_external')
 );
 $s
 ->set('app.service_bus.transport.example_sqs')
 ->class(SqsTransport::class)
 ->factory([SqsTransport::class, 'ofDsn'])
 ->arg('$dsnString', '%env(SQS_DSN)%&queue=core_example_name');
 $s
 ->set('app.service_bus.transport.example_sqs2')
 ->class(SqsTransport::class)
 ->factory([SqsTransport::class, 'ofDsn'])
 ->arg('$dsnString', '%env(SQS_DSN)%&queue=core_example_name2');

Transport Groups

Transport groups allow you to logically group multiple transports together. This is useful when you want external messages marked for one transport name to be consumable by multiple actual transports.

For example, if you have an #[ExternalIn('example_group', 'SomeEvent')] attribute on a message, it can be consumed from both example_name_for_transport and example_name_for_transport2 transports.

Configuration example:

'transport_groups' => [
 'example_group' => ['example_name_for_transport', 'example_name_for_transport2'],
 'another_group' => ['memory', 'external'],
],

This maps group names to arrays of transport names that belong to that group.