Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Messenger Mongo Bundle Laravel Package

emag-tech-labs/messenger-mongo-bundle

A Symfony Messenger transport that stores queued and failed messages in MongoDB. Install via Composer, configure DSN, database, collection, queue, and redeliver timeout, then use standard Messenger retry and failed-message commands.

View on GitHub
Deep Wiki
Context7

Messenger Mongo Bundle

Packagist Version GA build codecov Mutation testing badge
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.

Installation

The recommended way to install the bundle is through Composer:

$ composer require emag-tech-labs/messenger-mongo-bundle

Configuration & usage

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

Defining an index for the messages collection

The MongoDB collections where messages are stored (default messenger_queue) should have the following index defined:

{ available_at: 1 }

Without the index, the performance may degrade significantly with a large number of items (100k+) in the queue.

Submitting bugs and feature requests

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin