-
Notifications
You must be signed in to change notification settings - Fork 0
/
sender.php
42 lines (30 loc) · 1.06 KB
/
sender.php
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
36
37
38
39
40
41
42
<?php
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
class Sender {
private $response;
private $corr_id;
public function execute($message) {
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
list($callback_queue, ,) = $channel->queue_declare('', false, false, true, false);
$channel->basic_consume($callback_queue, '', false, false, false, false, array($this, 'onResponse'));
$this->response = null;
$this->corr_id = uniqid();
$msg = new AMQPMessage($message, array('correlation_id' => $this->corr_id, 'reply_to' => $callback_queue, 'content_type'=>"application/json"));
$channel->basic_publish($msg, '', '_argus_queue');
while (!$this->response) {
$channel->wait();
}
$channel->close();
$connection->close();
return $this->response;
}
public function onResponse(AMQPMessage $rep) {
if($rep->get('correlation_id') == $this->corr_id) {
$this->response = $rep->body;
}
}
}
?>