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()));
    });
  });
});