Skip to content

[doc][skip ci] add doc for client on send extensions. #285

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Dec 1, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions docs/client/extensions.md
Original file line number Diff line number Diff line change
@@ -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
<?php
namespace Acme;

use Enqueue\Client\ExtensionInterface;
use Enqueue\Client\Message;

class TimestampMessageExtension implements ExtensionInterface
{
public function onPreSend($topic, Message $message)
{
if ($message->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)
1 change: 1 addition & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down