digicomp / flow-symfony-bridge-messenger
Flow dependency injection bridge to symfony/messenger
Installs: 763
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 2
Open Issues: 0
Type:neos-package
Requires
- php: ^8.1
- neos/flow: ^8.0
- symfony/doctrine-messenger: ^6.2
- symfony/event-dispatcher: ^4.2 | ^5.2 | ^6.2
This package is auto-updated.
Last update: 2024-10-19 02:06:42 UTC
README
This packages brings a DI configuration for the symfony/messenger
component, so it can be used easily in neos/flow
projects.
To see how to use it, you probably want to have a look at the documentation of symfony/messenger
.
Getting started
To get it integrated, you all need to do is to get message bus injected:
#[Flow\Inject] protected MessageBusInterface $messageBus;
And later in your method:
$this->messageBus->dispatch(new CustomMessage())
You should configure a routing, to let the messenger know, over which transport your message should be handled:
DigiComp: FlowSymfonyBridge: Messenger: transports: "custom-messages": dsn: "flow-doctrine://default?table_name=test_messenger_messages" routing: Acme\Vendor\Messenger\CustomMessage: - "custom-messages"
In this example we are using a doctrine transport (the speciality "flow-transport" is a transport which uses the already existing connection to doctrine instead of creating a new one - for the rest of the DSN-Format have a look in the documentation of symfony/messenger
)
A handler for your CustomMessage could look like this:
use Symfony\Component\Messenger\Attribute\AsMessageHandler; #[AsMessageHandler] class CustomMessageHandler { public function __invoke(CustomMessage $message) { //your code here } }
It will be automatically found by Flow // the messenger and messages arriving at the bus will be handled by your handler.
Probably you'll want to consume the messengers with long living processes or as a cronjob. The Flow command for that task is messenger:consume
(more help available)