pnz / messenger-filesystem-transport
Symfony Messenger transport for the filesystem.
Installs: 1 839
Dependents: 1
Suggesters: 0
Security: 0
Stars: 10
Watchers: 0
Forks: 2
Open Issues: 1
Requires
- php: ^7.1
- symfony/filesystem: ^4.1
- symfony/lock: ^4.1
- symfony/messenger: ^4.2.0
- symfony/serializer-pack: ^1.0
Requires (Dev)
- phpunit/phpunit: ^7.2
Suggests
- ext-pcntl: For handling system level signals
This package is auto-updated.
Last update: 2023-10-25 18:18:01 UTC
README
Extends the Symfony Messenger component to handle the filesystem transport. Queues are processed locally by storing and retrieving messages from the filesystem.
The queuing is implemented as a LIFO (Last-In, First-Out) list, this to optimize the filesystem usage and the r/w operations.
Install
composer require pnz/messenger-filesystem-transport
This transport handles the filesystem://
schema, use the FilesystemTransportFactory
to create the transport.
Symfony configuration: use the Filesystem Transport Bundle Bundle.
Install without the Symfony Bundle:
- Register the transport factory:
# config/services.yaml Pnz\Messenger\FilesystemTransport\FilesystemTransportFactory: arguments: $serializer: '@messenger.transport.symfony_serializer' # The following lines are not needed if "autowire" is enabled $filesystem: '@filesystem' $lockFactory: '@lock.factory' # Enable the `filesystem://` transport to be auto-discovered, this is not needed when "autoconfigure" is enabled tags: ['messenger.transport_factory']
- Configure the Filesystem transport:
# config/packages/messenger.yaml parameters: # The path *MUST* specify an absolute path of the directory where the queue will be stored # Example1: the queue messages will be stored in the project's `var/queue` directory env(MESSENGER_TRANSPORT_DSN): "filesystem://%kernel.project_dir%/var/queue" # Example2: use the `/tmp/queue` directory (note the triple `/`) env(MESSENGER_TRANSPORT_DSN): "filesystem:///tmp/queue" framework: messenger: transports: filesystem: '%env(resolve:MESSENGER_TRANSPORT_DSN)%' routing: App\Message\MyMessage: filesystem
Configuration
The DSN includes the following query parameters:
compress
: Enable/Disable compression of messages storage (gzinflate/gzdeflate), usecompress=true
(default: false)loop_sleep
: Define the sleep interval between loops in micro-seconds, useloop_sleep=MICRO-SECONDS
(default: 500000)
Example:
# .env # Enable compression, and sleep for 0.8 seconds during loops if the queue is empty MESSENGER_TRANSPORT_DSN="filesystem://%kernel.project_dir%/var/queue/default?compress=true&loop_sleep=800000"