Installasi RabbitMQ Pada Centos 7
0 people liked this article
A. Pendahuluan
RabbitMQ merupakan message broker yang ditulis dengan menggunakan bahasa pemrograman Erlang. RabbitMQ ini bisa diibaratkan sebagai sebuah kantor pos sekaligus tukang pos. Dia akan menerima pesan yang dikirimkan oleh sender lalu melakukan forward/push pesan tersebut kepada receiver. Berikut ini adalah langkah-langkah instalasi dan pengetesan queuing pada RabbitMQ.
Langkah – 1 Tambahkan Hostname dan IP Address
Tambahkan IP Address dan hostname di /etc/hosts
$ vi /etc/hosts
Langkah – 2 Install Erlang
Sebelum kita install Erlang, terlebih dahulu kita install epel-release menggunakan perintah di bawah.
$ yum -y install epel-release
$ yum -y update
Selanjutnya install Erlang.
$ yum -y install erlang socat
$ erl -version
Untuk masuk ke mode erlang gunakan perintah di bawah.
$ erl
Langkah – 3 Install RabbitMQ
Unduh rabbitMQ rpm menggunakan perintah di bawah.
$ wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm
Untuk versi lain nya bisa diunduh menggunakan tautan ini: https://www.rabbitmq.com/download.html, Impor kunci GPG menggunakan perintah di bawah.
$ rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
Instal paket RPM menggunakan perintah di bawah.
$ rpm -Uvh rabbitmq-server-3.6.10-1.el7.noarch.rpm
Jalan service rabbitmq.
$ systemctl start rabbitmq-server
Aktifkan auto start service rabbitmq pada saat server dalam kondisi poweroff atau restart.
$ systemctl enable rabbitmq-server
Cek service rabbitmq.
$ systemctl status rabbitmq-server
Install RabbitMQ Management Dashboard (Opsional).
$ rabbitmq-plugins enable rabbitmq_management
Ubah kepemilikan berkas RabbitMQ untuk user RabbitMQ.
$ chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/
Tambahkan user admin untuk login ke dashboard.
$ rabbitmqctl add_user admin StrongPassword
$ rabbitmqctl set_user_tags admin administrator
$ rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
Kemudian akses RabbitMQ Dashboard dan login menggunakan username dan password yang telah dibuat sebelumnya melalui browser Anda http://Your_Server_IP:15672/
Langkah – 4 Pengetesan
Pada pengetesan kali ini akan menggunakan bahasa pemograman PHP sebagai antriannya, berikut ini adalah langkah-langkahnya.
Instal composer dan PHP menggunakan local CentOS packages.
$ yum install composer php
Instal paket php mbstring dan bcmath sesuai dengan versi php yang Anda gunakan.
$ yum install php-mbstring php-bcmath
Instal php-amqplib menggunakan composer.
$ composer require php-amqplib/php-amqplib
Buat dua file pengetesan dan beri nama publisher.php yang digunakan untuk membuat task dan worker.php yang digunakan untuk melakukan forward / pushing kepada receiver.
$ vi /home/ubuntu/Queuing/publisher.php
<?php
require_once(__DIR__ . '/vendor/autoload.php');
define("RABBITMQ_HOST", "localhost");
define("RABBITMQ_PORT", 5672);
define("RABBITMQ_USERNAME", "guest");
define("RABBITMQ_PASSWORD", "guest");
define("RABBITMQ_QUEUE_NAME", "task_queue");
$connection = new \PhpAmqpLib\Connection\AMQPStreamConnection(
RABBITMQ_HOST,
RABBITMQ_PORT,
RABBITMQ_USERNAME,
RABBITMQ_PASSWORD
);
$channel = $connection->channel();
$channel->queue_declare(
$queue = RABBITMQ_QUEUE_NAME,
$passive = false,
$durable = true,
$exclusive = false,
$auto_delete = false,
$nowait = false,
$arguments = null,
$ticket = null
);
$job_id=0;
while (true)
{
$jobArray = array(
'id' => $job_id++,
'task' => 'sleep',
'sleep_period' => rand(0, 3)
);
$msg = new \PhpAmqpLib\Message\AMQPMessage(
json_encode($jobArray, JSON_UNESCAPED_SLASHES),
array('delivery_mode' => 2) # make message persistent
);
$channel->basic_publish($msg, '', RABBITMQ_QUEUE_NAME);
print 'Job created' . PHP_EOL;
sleep(1);
}
$ vi /home/ubuntu/Queuing/worker.php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
define("RABBITMQ_HOST", "localhost");
define("RABBITMQ_PORT", 5672);
define("RABBITMQ_USERNAME", "guest");
define("RABBITMQ_PASSWORD", "guest");
define("RABBITMQ_QUEUE_NAME", "task_queue");
$connection = new \PhpAmqpLib\Connection\AMQPStreamConnection(
RABBITMQ_HOST,
RABBITMQ_PORT,
RABBITMQ_USERNAME,
RABBITMQ_PASSWORD
);
$channel = $connection->channel();
$channel->queue_declare(
$queue = RABBITMQ_QUEUE_NAME,
$passive = false,
$durable = true,
$exclusive = false,
$auto_delete = false,
$nowait = false,
$arguments = null,
$ticket = null
);
echo ' [*] Waiting for messages. To exit press CTRL+C', "\n";
$callback = function($msg){
echo " [x]
Received ", $msg->body, "\n";
$job = json_decode($msg->body, $assocForm=true);
sleep($job['sleep_period']);
echo " [x]
Done", "\n";
$msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']);
};
$channel->basic_qos(null, 1, null);
$channel->basic_consume(
$queue = RABBITMQ_QUEUE_NAME,
$consumer_tag = '',
$no_local = false,
$no_ack = false,
$exclusive = false,
$nowait = false,
$callback
);
try
{
while (count($channel->callbacks))
{
print "running
non blocking wait." . PHP_EOL;
$channel->wait($allowed_methods=null, $nonBlocking=true, $timeout=1);
}
}
catch (Exception $e)
{
print "There
are no more tasks in the queue." . PHP_EOL;
}
$channel->close();
$connection->close();
Sebelum menjalankan publisher.php, login terlebih dahulu ke dashboard RabbitMQ untuk melihat total Queued Messages seperti gambar di bawah.
Atau menggunakan perintah di bawah ini melalui terminal.
$ rabbitmqctl list_queues
Dari grafik di atas kita bisa melihat bahwa saat ini tidak terdapat antrian di RabbitMQ, selanjutnya kita akan coba buat Job dengan menjalankan publisher.php
Dan kita lihat kembali pada grafik terpantau saat ini ada 30 Job di antrian RabbitMQ.
Selanjutnya kita jalankan worker.php untuk mengurangi antrian di RabbitMQ.
Terlihat pada grafik antrian lambat laun akan berkurang oleh worker.php yang kita jalankan sebelumnya.
Selamat! Anda sudah bisa install RabbitMQ. Semoga artikel ini dapat membantu Anda. Temukan bantuan lainnya melalui Knowledge Base Biznet Gio. Jika Anda masih memiliki kendala silahkan hubungi support@biznetgio.com atau (021) 5714567.
Popular Articles
-
Cara Install & Konfigurasi Monitoring Cacti Serta Mengetahui Fungsi Fitur Pada Cacti
9 people say this guide was helpful
-
Cara Mengaktifkan Telnet pada Windows 7, 8 dan 10
3 people say this guide was helpful
-
Instalasi DNS Server Menggunakan Service Bind di CentOS 7
4 people say this guide was helpful
-
Jenis-Jenis Software Virtualisasi untuk Membuat Virtual Machine
5 people say this guide was helpful