File tree Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change 1+ .. index ::
2+ single: Messenger; Working with Doctrine
3+
4+ Working with Doctrine
5+ =====================
6+
7+ If your message handlers writes to a database it is a good idea to wrap all those
8+ writes in a single Doctrine transaction. This make sure that if one of your database
9+ query fails, then all queries are rolled back and give you a change to handle the
10+ exception knowing that your database was not changed by your message handler.
11+
12+ To make sure your message bus wraps the handler in one transaction you must first
13+ register the middleware as a service.
14+
15+ .. configuration-block ::
16+
17+ .. code-block :: yaml
18+
19+ # config/services.yaml
20+ services :
21+ app.messenger.middleware_factory.transaction :
22+ class : Symfony\Bridge\Doctrine\Messenger\DoctrineTransactionMiddlewareFactory
23+ arguments : ['@doctrine']
24+
25+ app.doctrine_transaction_middleware :
26+ class : Symfony\Bridge\Doctrine\Messenger\DoctrineTransactionMiddleware
27+ factory : ['@app.messenger.middleware_factory.transaction', 'createMiddleware']
28+ abstract : true
29+ arguments : ['default']
30+
31+ Next thing you need to do is to add the middleware to your bus configuration.
32+
33+ .. configuration-block ::
34+
35+ .. code-block :: yaml
36+
37+ # config/packages/messenger.yaml
38+ framework :
39+ # ...
40+ default_bus : messenger.bus.command
41+ buses :
42+ messenger.bus.command :
43+ middleware :
44+ - messenger.middleware.validation
45+ - app.doctrine_transaction_middleware : ['default']
You can’t perform that action at this time.
0 commit comments