Sitemap
selçuk meral

selçuk meral

Software Developer | Software Consultant

RabbitMQ Nedir? Linux Server üzerine RabbitMQ kurulumu

6 min readOct 28, 2021
Press enter or click to view image in full size
https://www.rabbitmq.com/

Bu yazımda size RabbitMQ nedir ve Ubuntu Server a nasıl kurulur anlatmaya çalışacağım.RabbitMq Bir mesaj kuyruğu sistemidir. Amacı herhangi bir kaynaktan alınan bir mesajın, bir başka kaynağa sırası geldiği anda iletilmesidir.Genelde mesajlaşma sistemlerinde kullanılmaya başlansa da zaman içerisinde değişen ihtiyaçlardan dolayı kullanım alanları gittikçe genişledi.

Buna somut bir örnek vermemiz gerekirse; bir web sitesi üzerinden herhangi bir Word dosyasını PDF formatına dönüştürme hizmetini sağlayacaksanız. Buradaki işlem yoğunluğunu web uygulamasına yaptırmaktan kaçınılması gerekmektedir. Yapılması gereken RabbitMQ aracılığıyla oluşturulan bir kuyruğa tüm değerlerin sokulması ve süreçte ilgili kuyruğu dinleyen farklı bir uygulama aracılığıyla convert operasyonunun gerçekleştirilmesi gerekmektedir. Haliyle ana uygulamayı gereksiz bir Response Time’a maruz bırakmadan gerekli dönüşüm operasyonu başarıyla sonlandırılmış olacaktır.

Hatta zaman ayarlı message ve otomatik mailler de yine RabbitMq’ya güzel bir örnek olabilir. Sıraya alınan bu işlemlerin asenkron bir şekilde yapılması, hem çalışan uygulamanın boş yere bekletilmemesinden hem de sunucu üzerindeki işlem maliyetinin minimuma indirilmesinden dolayı RabbitMQ iyi bir tercih sebebi olabilir.

Kendi resmi sitesinde

  • Robust messaging for applications: Uygulamalarınız için sağlam bir mesajlaşma altyapısı.
  • Easy to use: Kullanımı kolay.
  • Runs all major operating systems: Yaygın kullanılan işletim sistemlerinin hepsinde çalışır.
  • Supports a huge number of developer platforms: Çok sayıda yazılım geliştirme platformunu destekler.
  • Open source and commercially supported: Açık kaynak ve ticari lisanslı seçeneklerini destekler.

RabbitMQ İşleyişi

https://www.rabbitmq.com/tutorials/amqp-concepts.html

Şemada da görüldüğü üzere RabbitMQ temelinde Publisher ve Consumer olmak üzere iki aktör ve Exchange ve Queue component leri mevcuttur. Burada Publisher RabbitMQ mesaj kuyruğuna mesaj gönderen kişidir/uygulamadır. Publisher mesajı publish ettikten sonra ilgili mesajı Exchange karşılayacaktır. Exchange, kendisine belirtilen route ile ilgili mesajı kuyruğa yönlendirir. İlgili mesajın nasıl kuyruğa gideceği Exchange içerisindeki route dan öğrenilir. Ardından kuyruğa gelen mesajlar Queue de sıralanır. Queue ilk giren ilk çıkar mantığında(FIFO) çalışan bir mekanizmaya sahiptir. Kuyruktaki mesajları tüketen/alan kişi ise Consumer dır. Tüm bu süreçte RabbitMQ AMQP(Advanced Message Queuing Protocol) protokolünü kullanmakta ve ilgili protokol üzerinden faaliyetlerini gerçekleştirmektedir.

RabbitMQ nun az çok ne işe hizmet ettiğini anlatmaya çalıştım. Daha detaylı bilgi için kendi Web Sitesini ziyaret edebilirsiniz.

Şimdi Ubuntu bir server a RabbitMQ kuralım

Burda ben client bilgisayarıma multipass kurarak sanal linux makinaları oluşturacağım. Multipass ayrıntılı kurlum dökümanı için Tıklayınız

Terminalden aşağıdaki komutla 2 CPU lu 2GB ram li ve 10GB disk kapasiteli rabbitmq-server adından bir Ubuntu Sanal makina oluşturalım

multipass launch --name rabbitmq-server -c 2 -m 2G -d 10G

Başarılı bir kurulum ardından aşağıdaki gibi rabbitmq-server hazır. multipass bizim için istediğimiz konfigürasyonlarda Ubuntu 20.04 imagesinden bir Ubuntu server oluşturdu.

Press enter or click to view image in full size

Aşağıdaki komutla rabbitmq-server sunucumuza bağlanıyoruz

multipass exec rabbitmq-server bash
Press enter or click to view image in full size

Artık sunucumuz hazır olduğuna göre RabbitMQ kurulumana başlayabiliriz.

RabbitMq kendi resmi sitesinden kurulum için 3 seçenek mevcut. Cloudsmith ile, PackageCloud ile yada manuel Dpkg kullanarak kurmak. Bunlardan üçüncü seçenek kendi resmi sitesinde de önerilmemekte. Daha detaylı bilgi için Tıklayınız. Resmi sitesindeki açıklama;

Modern RabbitMQ’yu Debian ve Ubuntu’ya kurmak için iki seçenek vardır:

Seçenek A: Cloudsmith’te uygun depoları kullanma (hızlı başlangıç komut dosyası)
Seçenek B: PackageCloud ve Launchpad’de uygun depoların bir kombinasyonunu kullanma (hızlı başlangıç komut dosyası)

Biz burada PackageCloud ile kurulumu anlatacağız.

Get selçuk meral’s stories in your inbox

Join Medium for free to get updates from this writer.

ilk olarak a HTTPS Aktarımı’nı etkinleştireceğiz ve Temel Bağımlılıkları yükleyeceğiz. RabbitMQ ve Erlang paketlerini PackageCloud, Cloudsmith.io veya Launchpad gibi hizmetlerden indirebilmesi için apt-transport-https paketinin kurulu olması gerekir.Aşağıdaki komutla bu işlemi gerçekleştiriyoruz

sudo apt-get install curl gnupg apt-transport-https -y
Press enter or click to view image in full size

Daha sonra aşağıdaki komutu çalıştırarak RabbitMQ’nun ana imzalama anahtarını ayarlıyoruz.

curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null

Modern Erlang sürümleri sağlayan Launchpad PPA ayarlamalarını yapıyoruz

curl -1sLf "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xf77f1eda57ebb1cc" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg > /dev/null

PackageCloud RabbitMQ deposunu ayarlıyoruz

curl -1sLf "https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/io.packagecloud.rabbitmq.gpg > /dev/null

Team RabbitMQ tarafından sağlanan uygun depoları ekleyin. Burada önemli bir nokta bulunmakta. Doğru paketi sağlayan uygun bir depo kurmak için işetim sistemimize göre dağıtım adını belirlemeliyiz.

  • Ubuntu 20.04 için focal
  • Ubuntu 18.04 için bionic
  • Debian Buster için buster

olarak distribution adı belirlenir. Bizim sunucumuz Ubuntu 20.04 oldugundan focal olarak distribution i değiştiriyorum. sizde kurduğunuz sunucu işletim sitemine göre komut yerinde koyu renkli belirttiğim yere distribution adını yazabilirsiniz.

sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
## "bionic" as distribution name should work for any reasonably recent Ubuntu or Debian release.
## See the release to distribution mapping table in RabbitMQ doc guides to learn more.
deb [signed-by=/usr/share/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg] http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu bionic main
deb-src [signed-by=/usr/share/keyrings/net.launchpad.ppa.rabbitmq.erlang.gpg] http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu bionic main

## Provides RabbitMQ
##
## Replace focal with the name of the Ubuntu release used.
## On Debian, "deb/ubuntu" should be replaced with "deb/debian"
deb [signed-by=/usr/share/keyrings/io.packagecloud.rabbitmq.gpg] https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu/ focal main
deb-src [signed-by=/usr/share/keyrings/io.packagecloud.rabbitmq.gpg] https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu/ focal main
EOF

Paket dizinlerini güncelleyelim

sudo apt-get update -y
Press enter or click to view image in full size

Sırada Erlang paketlerini yükleme işlemi var. Bunun için aşağıdaki komutu kullanıyoruz.

sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl

Rabbitmq-server ı ve bağımlılıklarını aşağıdaki komut ile kuruyoruz.

sudo apt-get install rabbitmq-server -y --fix-missing
Press enter or click to view image in full size

Artık RabbitMQ kurulumunu tamamladık. şimdi rabitmq-server i start yapıp statüsünü kontrol edebiliriz.

sudo systemctl start rabbitmq-server
sudo systemctl status rabbitmq-server
Press enter or click to view image in full size

RabbitMQ logları için

sudo journalctl --system | grep rabbitmq
Press enter or click to view image in full size

Şimdi rabbitmq_management plugin i aktif hale getirerek RabitMQ arayüzüne ulaşıyoruz

rabbitmq-plugins enable rabbitmq_management
Press enter or click to view image in full size

Browser üzerinden http://<sunucu-ip>:15672/ adresine giderseniz sizi aşağıdaki gibi bir ekran karşılayacak.

Press enter or click to view image in full size

Şimdi yetkili bir kullanıcı oluşturalım ben rabbitmq_admin adında bir kullanıcı oluşturup şifresini password belirliyorum. Daha sonra oluşturduğumuz bu kullanıcıya admin rolü ekliyoruz. Detaylı bilgi için Tıklayınız

sudo rabbitmqctl add_user rabbitmq_admin passwordsudo rabbitmqctl set_user_tags rabbitmq_admin administrator
Press enter or click to view image in full size

Artık login olup RabbitMQ server arayüzüne bağlanabiliriz

Press enter or click to view image in full size

Ve bingo artık RabbitMQ server hazır.

Bu yazımda size RabbitMQ nün ne iş yaptığını ve bir Ubuntu server üzerine nasıl kurulacağını dilim döndüğünce anlatmaya çalıştım. Bir sonraki yazımda RabbitMQ kullanarak demo bir proje hazırlayacağım. Bol kodlu günler :)

--

--

selçuk meral
selçuk meral

Written by selçuk meral

Software Developer | Software Consultant