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.

No comments:

Post a Comment