Daftar Isi:
#installing rabbitMQ from Docker
pertama pull image docker
docker pull rabbitmq:4.0-management
lalu
docker run -d --name rabbitmq --restart unless-stopped -p 5672:5672 -p 15672:15672 rabbitmq:4.0-management
#rabbitMQ for Laravel
install package phpnya
composer require php-amqplib/php-amqplib
buat file service app/Libraries/RabbitMQService.php
<?php
namespace App\Libraries;
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
class RabbitMQService
{
private $connection;
private $channel;
public function __construct()
{
$this->connection = new AMQPStreamConnection(
env('RABBITMQ_HOST'),
env('RABBITMQ_PORT'),
env('RABBITMQ_LOGIN'),
env('RABBITMQ_PASSWORD'),
env('RABBITMQ_VHOST')
);
$this->channel = $this->connection->channel();
}
public function sendMessage(string $queue, string $message)
{
$this->channel->queue_declare($queue, false, true, false, false);
$msg = new AMQPMessage($message);
$this->channel->basic_publish($msg, '', $queue);
}
public function __destruct()
{
$this->channel->close();
$this->connection->close();
}
}
contoh penggunaanya:app/Http/Controllers/SkriningMerokokRemajaController.php
use App\Skrining;
use App\TSkriningMerokokRemaja;
use App\Helpers\MyHelper;
use App\Libraries\RabbitMQService;
use App\MPropinsi;
use App\MKota;
logError($e);
$response['message'] .= ' Terjadi Kesalahan Sistem!';
}
try {
$dataSkrining = $request->all();
unset($dataSkrining['_token']);
$rabbitmqService = new RabbitMQService();
$rabbitmqService->sendMessage('warehouse', json_encode($dataSkrining));
$response['message'] .= 'Data berhasil dikirim ke service laporan</span>';
} catch (\Exception $e) {
logError($e);
$response['status'] = 'danger';
$response['message'] .= ' Data gagal terkirim ke service laporan!';
}
return $response;
}
berikut adalah .env
RABBITMQ_HOST=rabbitmq
# RABBITMQ_HOST=localhost
RABBITMQ_PORT=5672
RABBITMQ_VHOST=/
RABBITMQ_USER=guest
RABBITMQ_PASSWORD=guest
sonsume rabbitMQ via TYPESCRIPT atau JAVASCRIPT
var amqp = require("amqplib/callback_api");
amqp.connect("amqp://localhost", function (error0, connection) {
if (error0) {
throw error0;
}
connection.createChannel(function (error1, channel) {
if (error1) {
throw error1;
}
var queue = "hello";
channel.assertQueue(queue, {
durable: false,
});
channel.consume("warehouse", function (msg) {
console.log(JSON.parse(msg.content.toString()));
});
});
});