-
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathrpc.php
More file actions
35 lines (26 loc) · 865 Bytes
/
rpc.php
File metadata and controls
35 lines (26 loc) · 865 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
declare(strict_types=1);
use Amp\TimeoutCancellation;
use Thesis\Amqp\Client;
use Thesis\Amqp\Config;
use Thesis\Amqp\DeliveryMessage;
use Thesis\Amqp\Message;
use Thesis\Amqp\Rpc;
use function Amp\trapSignal;
require_once __DIR__ . '/../vendor/autoload.php';
$client = new Client(Config::default());
$channel = $client->channel();
$queue = $channel->queueDeclare(autoDelete: true);
$channel->consume(
callback: static function (DeliveryMessage $delivery): void {
$delivery->reply(new Message("Request '{$delivery->message->body}' handled."));
},
queue: $queue->name,
noAck: true,
);
$rpc = new Rpc($client);
for ($i = 0; $i < 100; ++$i) {
dump($rpc->request(new Message("Request#{$i}"), routingKey: $queue->name, cancellation: new TimeoutCancellation(2))->body);
}
trapSignal([\SIGINT, \SIGTERM]);
$client->disconnect();