https://github.com/alekitto/messenger-extra
Additional transports and serializer support for symfony messenger
https://github.com/alekitto/messenger-extra
doctrine-dbal messenger php queue symfony symfony-messenger
Last synced: 12 months ago
JSON representation
Additional transports and serializer support for symfony messenger
- Host: GitHub
- URL: https://github.com/alekitto/messenger-extra
- Owner: alekitto
- License: mit
- Created: 2018-12-16T12:00:30.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2025-02-24T19:18:03.000Z (about 1 year ago)
- Last Synced: 2025-03-31T05:03:58.980Z (12 months ago)
- Topics: doctrine-dbal, messenger, php, queue, symfony, symfony-messenger
- Language: PHP
- Homepage:
- Size: 239 KB
- Stars: 20
- Watchers: 3
- Forks: 10
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
Messenger Extra
===============
[](https://github.com/alekitto/messenger-extra/actions/workflows/tests.yml)
This library provides additional transports (and other things) for the symfony messenger component.
## Install
```
composer require kcs/messenger-extra
```
## Transports
### Doctrine DBAL
A transport using doctrine DBAL can be used through the `DbalTransportFactory`.
Supports delayed, prioritized, expiring (TTL) and unique messages.
The dsn supports the following schemes:
- `db2`
- `mssql`
- `mysql`
- `mysql2`
- `postgres`
- `postgresql`
- `pgsql`
- `sqlite`
- `sqlite3`
### Doctrine ORM
An existing ORM connection can be used with `doctrine` scheme.
For example `doctrine://default/queue` will use the `default` doctrine
connection with the `queue` table.
The `doctrine` scheme will also register a `postGenerateSchema`
event listener that will create the correct table during a schema update
(or migration if using DoctrineMigrations)
### Mongo
Transport using MongoDB PHP client as transport.
Supports delayed, prioritized, expiring (TTL) and unique messages.
Use DSN with `mongodb` scheme with `/database/collection` path
(database `default` and `queue` collection are used if not specified).
#### Mongodb authentication
For authenticated database, with user configured per database, you could
specify `authSource` option in DSN query string:
```
mongodb://user:pass@server:port/database?authSource=database
```
> :warning: NOTE that if a username is passed in DSN the `authSource` connection option
is already added to the mongo uri when passing to the client library.
Its value is equal to the database selected (`default` if missing).
> :information_source: For information about the supported options in mongo DSN you can check
the [official documentation page on PHP.net](https://www.php.net/mongodb-driver-manager.construct#mongodb-driver-manager.construct-urioptions)
### Null
Useful for testing environments, where no message should be dispatched.
## Messages utilities
### DelayedMessageInterface
Allows to specify a message delay. Implement this in your message class to delay the delivery of your message.
### TTLAwareMessageInterface
Allows the expiration of a message.
Implement this interface if you want your message to expire after a given amount of time.
### UniqueMessageInterface
Adds a message only once in the queue.
If another message with the same uniqueness key is present, the message is discarded.
## Compatibility
| Version | Compatible Symfony Version | Build Status |
|------------|----------------------------|--------------|
| >= 2.2.0 | ^4.4, ^5.0 | [](https://github.com/alekitto/messenger-extra/actions/workflows/tests.yml) |
| 2.0, 2.1 | ^4.3, ^5.0 | Not available |
| 1.x | 4.2.* | Not available |
## Symfony bundle
A symfony bundle is included in the code under /lib:
Use `MessengerExtraBundle` to fully integrate this library into your symfony application.
Just add this to `bundles.php`:
```
Kcs\MessengerExtra\MessengerExtraBundle::class => ['all' => true],
```
Available transports and functionalities will be registered automatically.
---
Amazing things will come shortly.
## License & Contribute
This library is released under MIT license.
Feel free to open an issue or a PR on GitHub. If you want to contribute to this project, you're welcome!
A.