12. MessengerΒΆ

The bundle provides a specific thumbnail class to generate thumbnails through an asynchronous task. So there no processing time for the user after uploading a file.

It is recommended to read about Symfony Messenger if it is your first time using it.

First, you need to install Symfony Messenger:

1
composer require symfony/messenger

After installing the dependency, you need to enable the integration and change the thumbnail configuration for each provider:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# config/packages/sonata_media.yaml

sonata_media:
    messenger:
        enabled: true
    providers:
        image:
            thumbnail:  sonata.media.thumbnail.messenger
        vimeo:
            thumbnail:  sonata.media.thumbnail.messenger
        youtube:
            thumbnail:  sonata.media.thumbnail.messenger
        dailymotion:
            thumbnail:  sonata.media.thumbnail.messenger

To handle async messages, make sure you configure messenger with an async transport:

1
2
3
4
5
6
7
8
# config/packages/messenger.yaml

framework:
    messenger:
        transports:
            async: "%env(MESSENGER_TRANSPORT_DSN)%"
        routing:
            'Sonata\MediaBundle\Messenger\GenerateThumbnailsMessage': async

You can also change the default bus for generate thumbnails:

1
2
3
4
5
6
# config/packages/sonata_media.yaml

sonata_media:
    messenger:
        enabled: true
        generate_thumbnails_bus: my.defined.bus

I which case, make sure you define that bus on messenger configuration:

1
2
3
4
5
6
# config/packages/messenger.yaml

framework:
    messenger:
        buses:
            my.defined.bus: