Showing posts with label AMQP. Show all posts
Showing posts with label AMQP. Show all posts

Sunday, September 9, 2018

Spring Boot - RabbitMQ


oke Kali ini saya akan membagi pengalaman belajar saat mencoba menggunakan Spring boot dengan rabbitMQ, Sebelum memulainya kita berkenalan dulu dengan rabbitMQ.

Apa ituRabbitMQ?
- RabbitMQ adalah Software antrian yang digunakan untuk pengiriman pesan. (produce/consumer).

- Pengiriman pesan dari produce ke consumer menggunakan konsep queue.(antrian)
- RabbitMQ juga menggunakan AMQP untuk transportasi data.

nah itu tadi pengenalan tentang rabbitMQ, dan rabbitMQ juga disebut Message Broker, makin bingung ya, hmmm jadi disini di uraikan apa itu message broker : 


 -Message Broker dapat bertindak sebagai perantara untuk berbagai layanan misalnya aplikasi web mengirim data ke server dan dapat digunakan untuk mengurangi beban dan waktu pengiriman.
-Message Broker diibaratkan sebagai kantor pos sekaligus tukang pos.
-Flownya adalah pesan yang di kirim oleh producer diterima oleh message broker untuk kemudian disimpan di dalam queue dan pesan tersebut akan di forward satu-satu kepada receiver.
jadi rabbitMQ adalah software message broker dengan berkonsep queue dalam menampung pesan.

so, kita bahas Queue :
-Queue adalah antrian
-Queue bersifat FIFO (first in first out)
-Elemen yang pertama masuk ke antrian (queue) akan keluar pertama kalinya.
 
Dibawah ini adalah flow Queu :
 
nah jadi kita semakin mengenal ya software rabbitMQ, kapan kita menggunakannya? 
- ketika mendistribusikan pesan ke banyak penerima untuk di konsum  
- untuk menyeimbangkan beban saat pengiriman. 
- pengiriman pesan dari satu aplikasi ke aplikasi lainnya
- untuk memberikan notifikasi, ketika terjadi error atau maintenance di sebuah aplikasi dengan
  memberitahu kepada user.
- jika tedapat perhitungan yg rumit yang membutuhkan waktu dalam memprosesnya maka data bisa
  langsung masuk ke dalam antrian untuk di proses.
 
 gambar di atas adalah arsitektur rabbitMq
 
. Skrng kita praktekan Spring boot dengan rabbitMq.

pertama buat project Spring boot dan tambahkan dependencynya 


dan skrng kita buat Controllernya.
bisa kita lihat disini controller di project yang kita buat sebagai aplikasi untuk mempublish pesan kemudian kita inject Publisher


dan jangan lupa kita tambahkan di file application.properties bisa di lihat di gambar di bawah ini


nah Skrng setelah kita bisa membuat aplikasi projject publishernya skrng kita buat project lagi sebagai aplikasi consumer
masih sama dengan langkah langkah saat membuat aplikasi publisher, hanya saja untuk project consumer dapat kita lihat pada gambar di bawah ini :


dan untuk application.propertiesnya dapat di lihat pada gambar sebagai berikut:

skrng kita jalan dan kita kirim pesan melalui project yang sudah kita buat sebagai publisher. kemudian kita buka postman untuk mengirim pesan ke consumer

nah pesan berhasil terkirim skrng kita cek log di project publisher kita.


nah dapat di lihat lognya pesan berhasil terkirim dengan tulisan hello word sesuai yang kita kirim.
skrng kita cek project consumer apakah pesan berhasil di terima atau tidak.
dapat di lihat log pada project consumer pesan berhasil di terima .

oke, jadi cukup sampai disini tulisan saya kali ini, semoga bermanfaat





Sunday, March 18, 2018

Pengenalan AMQP


Pada blog kali ini saya akan mencoba memaparkan pengenalan terkait AMQP. AMQP merupakan salah satu standard messaging protocol. Sebelum saya masuk ke AMQP adalah lebih baik apabila saya menjelaskan dulu apa sebenarnya itu messaging?
Messaging merupakan proses pertukan data/message antara satu point ke point lain, point yang dimaksud bisa dicontohkan antara satu web ke Web lain atau dari satu API ke API lain.
Proses messaging/pertukaran data/pesan ini dapat bersifat Asynchronous, Synchronous ataupun oneway dan proses messaging pasti memiliki 2 komponen utama yaitu : Producer (pengirim data/pesan) dan Consumer (Penerima data/pesan).

Langsung saja kita mulai ke topik utama kita yaitu pengenalan pada AMQP.

History

Berikut adalah beberapa point history dari AMQP :
  • Ide pertama pada tahun 2003 yang dibuat oleh John O'Hara di JPMorgan Chase di London.
  • Untuk design awal dilakukan oleh JPMorgan mulai pertengahan 2004  - pertengahan 2006.
  • Pada tahun yang sama mereka bekerjasama kembali dengan JMatix Corporation untuk mengembangkan broker dengan model AMQP dan membuat dokumentasi terkait protokol tersebut.
  • selain itu beberapa perusahaan lain yang masuk dalam grup kerjasama untuk pengembangan AMQP dan broker nya adalah : Cisco, IONA, Imatix, Red Hat dan TWIST.
  • AMQP di rreleased oleh AMQP Grup pada 30 October 2011.
  • dan diterima sebagai standar internasional IEC pada tahun 2014.

Apa itu AMQP?

AMQP singkatan dari Advanced Messaging Queuing Prtoocol merupakan desain standar pertukaran pesan (messaging) yang mendukung efisiensi penentuan proses pertukaran pesan (messaging) pada aplikasi atau komunikasi data yang sngat beragam saat ini. 
mungkin ada yang bingung AMQP posisinya dimana, berikut adalah design posisi AMQP dalam penerapannya :

AMQP Core Elements

  1. Connections (network layer strwam transport : TCP, SCTP atau Pipes)
  2. Sessions ( Binds two undirectional channels to form a bidirectional, sequential conversation).
  3. Link (Named undirectional transfer route for message from resource to target node).

Message-Transfer

Cara penyelesaian ada 2 jenis, yaitu :
  1. At-most-once/Fire-And-Forget : yaitu pertukaran/pengiriman yang sama di lakukan hanya sekali saja atau paling banyak hanya sekali.
  2. At-Least-Once,yaitu : Proses pertukaran/pengiriman data yang sama dapat dilakukan secara berkali-kali atau paling sedikit sekali.
Status Pengiriman dapat di bagi menjadi beberapa bagian, yaitu :
  1. Intermediary State (Status messaging sedang bverjalan atau on-progress).
  2. Terminal State (Status ketika proses messaging dianggap selesai)
    • Accepted (Pesan telah diterima oleh si consumer).
    • Rejected (Si consumer menolak pesan yang dikirimkan kepada dia ole si producer).
    • Released (Pesan tidak dipedulikan (abandoned) oleh si consumer sehingga bila perlu si producer harus mengirim ulang pesan tersebut) .
    • Modified (pesan sudah di released dan perlu di ubah/modify sesuai dengan indikasi yang tertera pada detail pesan).
Untuk Flow Control proses transfer dapat dilihat pada gambar :
Terminology AMQP sebagai berikut :
  1. Broker : merupakan sebuah applikasi yang menerapkan model AMQP yang menerima koneksi dari klien dan digunakan sebagai applikasi untuk message routing, Queue lain-lain.
  2. Message : pesan/content dari data yang di transfer/routing yang mengandung beberpa informasi seperti payload, attribute dan sebagainya.
  3. Producer : Sebuah applikasi yang meletakkan/mengirimkan pesan ke Queue melalui exchange.
  4. Consumer : Sebuah Applikasi yang memiliki role untuk menerima/mengambil pesan yang telah dikirimkan oleh si producer dan ada di Queue.

      • keterangan :
        • Exchange : Bagian dari broker yang menerapkan AMQP model yang bertugas menerima pesan dan meletakkannya kedalam Queue.
        • Queue (Message Queue) : Sebuah Entity yang bertugas menampung pesan dan consumer mana yang akan menerima pesan tersebut.
        • Bindings : Bertugas mendistribusikan pesan dari Exchanges ke Queue.
      • Beberapa Bentuk peletakan data dari Exchange ke Queue adalah sebagai Berikut :
        • Direct : Message akan di route alngsung ke Queue yang ada yang terdaftar pada Key message. Sehingga ketika key diterima maka pesan akan langsung dikirimkan ke Queue sesuai dengan Key tersebut.
        • Topic : Message akan di route berdasarkan pattern dan key yang ada dan bersifat publish (publish subscribe), sehingga exchange akan meletakkan pesan kesetiap queue sesuai dengan key + pattern yang ada.
        • Fanout : Peletakan data yang tidak bergantung pada key ataupun pattern. Pesan yang diterima akan langsung di publish kesemua Queue yang terdapat pada broker.
Jika kita ingin menerapakan model AMQP init pada proses messaging, maka kita harus menggunakan Broker APpp yang sudah menerapakan model ini. Berikut adalah beberapa Message Broker yang menerapkan AMQP adalah :
  • QPID (Apache foundation).
  • ActiveMQ 
  • Solace Cloud
  • Solace
  • JORAM
  • OpenAMQ
  • StormAMQ
  • RabbitMQ
Mungkin demikianlah sedikit pengenalan terkait AMQP yang bisa saya bagikan, semoga bermanfaat.
Terimakasih.