diff --git a/docs/client/extensions.md b/docs/client/extensions.md new file mode 100644 index 000000000..0e121b5c3 --- /dev/null +++ b/docs/client/extensions.md @@ -0,0 +1,45 @@ +# Client extensions. + +There is an ability to hook into sending process. You have to create an extension class that implements `Enqueue\Client\ExtensionInterface` interface. +For example, `TimestampMessageExtension` extension adds timestamps every message before sending it to MQ. + +```php +getTimestamp()) { + $message->setTimestamp(time()); + } + } + + public function onPostSend($topic, Message $message) + { + + } +} +``` + +## Symfony + +To use the extension in Symfony, you have to register it as a container service with a special tag. + +```yaml +# config/services.yaml + +services: + timestamp_message_extension: + class: Acme\TimestampMessageExtension + tags: + - { name: 'enqueue.client.extensions' } +``` + +You can add `priority` attribute with a number. The higher value you set the earlier the extension is called. + +[back to index](../index.md) diff --git a/docs/index.md b/docs/index.md index c72d2ec73..3148c42ab 100644 --- a/docs/index.md +++ b/docs/index.md @@ -22,6 +22,7 @@ - [Supported brokers](client/supported_brokers.md) - [Message bus](client/message_bus.md) - [RPC call](client/rpc_call.md) + - [Extensions](client/extensions.md) * [Job queue](#job-queue) - [Run unique job](job_queue/run_unique_job.md) - [Run sub job(s)](job_queue/run_sub_job.md)