Skip to content

Commit 6fbea03

Browse files
authored
Merge pull request #285 from php-enqueue/client-extensions-doc
[doc][skip ci] add doc for client on send extensions.
2 parents c9af389 + 1bc875e commit 6fbea03

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

Diff for: docs/client/extensions.md

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Client extensions.
2+
3+
There is an ability to hook into sending process. You have to create an extension class that implements `Enqueue\Client\ExtensionInterface` interface.
4+
For example, `TimestampMessageExtension` extension adds timestamps every message before sending it to MQ.
5+
6+
```php
7+
<?php
8+
namespace Acme;
9+
10+
use Enqueue\Client\ExtensionInterface;
11+
use Enqueue\Client\Message;
12+
13+
class TimestampMessageExtension implements ExtensionInterface
14+
{
15+
public function onPreSend($topic, Message $message)
16+
{
17+
if ($message->getTimestamp()) {
18+
$message->setTimestamp(time());
19+
}
20+
}
21+
22+
public function onPostSend($topic, Message $message)
23+
{
24+
25+
}
26+
}
27+
```
28+
29+
## Symfony
30+
31+
To use the extension in Symfony, you have to register it as a container service with a special tag.
32+
33+
```yaml
34+
# config/services.yaml
35+
36+
services:
37+
timestamp_message_extension:
38+
class: Acme\TimestampMessageExtension
39+
tags:
40+
- { name: 'enqueue.client.extensions' }
41+
```
42+
43+
You can add `priority` attribute with a number. The higher value you set the earlier the extension is called.
44+
45+
[back to index](../index.md)

Diff for: docs/index.md

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
- [Supported brokers](client/supported_brokers.md)
2323
- [Message bus](client/message_bus.md)
2424
- [RPC call](client/rpc_call.md)
25+
- [Extensions](client/extensions.md)
2526
* [Job queue](#job-queue)
2627
- [Run unique job](job_queue/run_unique_job.md)
2728
- [Run sub job(s)](job_queue/run_sub_job.md)

0 commit comments

Comments
 (0)