This bundle offers a new type of transport for the Symfony Messenger component. While MongoDB is not the best tool to be used as a queue, sometimes it's more convenient to use the tools that your application already uses. For example, if your application already uses MongoDB and you want a persistent storage for the failed messages, I think it's quite handy to use MongoDB as a storage.
The recommended way to install the bundle is through Composer:
$ composer require emag-tech-labs/messenger-mongo-bundle
Take a look here if you need to find out how to configure the driverOptions, uriOptions and dsn options.
framework:
messenger:
transports:
hello_queue:
dsn: mongodb://127.0.0.1:27017
options:
uriOptions: []
driverOptions: []
database: symfony # required
collection: hello_messages # default is "messenger_queue"
queue: hello_queue # default is "default"
redeliver_timeout: 4800 # default is 3600
enable_writeConcern_majority: false # default is true
The features described here can be used also, therefore the following commands are available in order to manually debug the failed messages:
# see all messages in the failure transport
$ php bin/console messenger:failed:show
# see details about a specific failed message
$ php bin/console messenger:failed:show 20 -vv
# view and retry messages one-by-one
$ php bin/console messenger:failed:retry -vv
# retry specific messages
$ php bin/console messenger:failed:retry 20 30 --force
# remove a message without retrying it
$ php bin/console messenger:failed:remove
# displays the number of queued messages in all transports
$ php bin/console messenger:stats
If you found a nasty bug or want to propose a new feature, you're welcome to open an issue or create a pull request here.