Dukungan Advanced Message Queueing Protocol (AMQP) 1.0 di Azure Service Bus

Layanan cloud Azure Service Bus menggunakan AMQP 1.0 sebagai sarana komunikasi utamanya. Microsoft telah bekerja sama dengan mitra di seluruh industri, baik pelanggan maupun vendor broker pesan yang bersaing, untuk mengembangkan dan memajukan AMQP selama dekade terakhir, dengan ekstensi baru sedang dikembangkan di Komite Teknis OASIS AMQP. AMQP 1.0 adalah standar ISO dan IEC (ISO 19464:20149).

AMQP memungkinkan Anda membuat aplikasi hibrid lintas platform menggunakan protokol standar terbuka yang netral vendor dan netral implementasi. Anda dapat membuat aplikasi menggunakan komponen yang didesain menggunakan bahasa kerangka kerja yang berbeda, dan yang berjalan di sistem operasi yang berbeda. Semua komponen ini dapat terhubung ke Azure Service Bus dan bertukar pesan bisnis terstruktur dengan lancar secara efisien dan dengan ketepatan penuh.

Pengantar: Apa itu AMQP 1.0 dan mengapa penting?

Secara tradisional, produk middleware berorientasi pesan telah menggunakan protokol paten untuk komunikasi antara aplikasi klien dan broker. Hal ini berarti bahwa setelah Anda memilih broker pesan vendor tertentu, Anda harus menggunakan pustaka vendor tersebut untuk menghubungkan aplikasi klien Anda ke broker tersebut. Hal ini menghasilkan tingkat ketergantungan pada vendor itu, karena transfer aplikasi ke produk yang berbeda memerlukan perubahan kode di semua aplikasi yang terhubung. Di komunitas Java, standar API khusus bahasa seperti Java Message Service (JMS) dan abstraksi Spring Framework telah mengurangi gangguan tersebut, tetapi memiliki cakupan fitur yang sempit dan mengecualikan pengembang menggunakan bahasa lain.

Lebih lanjut, menghubungkan broker olah pesan dari vendor yang berbeda memang rumit. Hal ini biasanya memerlukan bridging tingkat aplikasi untuk memindahkan pesan dari satu sistem ke sistem lain dan menerjemahkan antara format pesan milik mereka. Ini adalah persyaratan umum; misalnya, saat Anda harus menyediakan antarmuka terpadu baru ke sistem lain yang lebih lama, atau mengintegrasikan sistem TI setelah penggabungan. AMQP memungkinkan interkoneksi broker penghubung secara langsung, misalnya menggunakan router seperti Apache Qpid Dispatch Router atau "shovels" broker-native seperti salah satu RabbitMQ.

Industri perangkat lunak adalah bisnis yang bergerak cepat; bahasa pemrograman baru dan kerangka kerja aplikasi diperkenalkan dengan kecepatan yang terkadang membingungkan. Demikian pula, persyaratan sistem TI berevolusi dari waktu ke waktu dan pengembang ingin memanfaatkan fitur platform terbaru. Namun, terkadang vendor olah pesan yang dipilih tidak mendukung platform ini. Jika protokol olah pesan adalah hak milik, orang lain tidak dapat menyediakan pustaka untuk platform baru. Oleh karena itu, Anda harus menggunakan pendekatan seperti membangun gateway atau jembatan yang memungkinkan Anda terus menggunakan produk olah pesan.

Pengembangan Advanced Message Queuing Protocol (AMQP) 1.0 dilatarbelakangi oleh masalah tersebut. Ini berasal dari JP Morgan Chase, yang, seperti kebanyakan perusahaan jasa keuangan, adalah pengguna berat middleware berorientasi pesan. Tujuannya sederhana: untuk membuat protokol olah pesan standar terbuka yang memungkinkan pembuatan aplikasi berbasis pesan menggunakan komponen yang dibuat menggunakan berbagai bahasa, kerangka kerja, dan sistem operasi, semuanya menggunakan komponen terbaik dari berbagai pemasok.

Fitur teknis AMQP 1.0

AMQP 1.0 adalah protokol olah pesan tingkat kabel yang efisien dan andal, yang dapat digunakan untuk membuat aplikasi olah pesan lintas platform yang kuat. Protokol ini memiliki tujuan sederhana: untuk menentukan mekanisme transfer pesan yang aman, andal, dan efisien antara dua pihak. Pesan itu sendiri dikodekan menggunakan representasi data portabel yang memungkinkan pengirim dan penerima heterogen untuk bertukar pesan bisnis terstruktur dengan ketepatan penuh. Berikut adalah ringkasan fitur yang paling penting:

  • Efisien: AMQP 1.0 adalah protokol berorientasi koneksi yang menggunakan pengkodean biner untuk petunjuk protokol dan pesan bisnis yang ditransfer melaluinya. Protokol ini menggabungkan skema kontrol aliran yang canggih untuk memaksimalkan penggunaan jaringan dan komponen yang terhubung. Oleh karena itu, protokol ini dirancang untuk mencapai keseimbangan antara efisiensi, fleksibilitas, dan interoperabilitas.
  • Andal: Protokol AMQP 1.0 memungkinkan pesan untuk ditukar dengan berbagai jaminan keandalan, mulai dari pengiriman picu-dan-lupakan hingga dapat diandalkan, tepat setelah dibenarkan.
  • Fleksibel: AMQP 1.0 adalah protokol fleksibel yang dapat digunakan untuk mendukung topologi yang berbeda. Protokol yang sama dapat digunakan untuk komunikasi klien-ke-klien, klien-ke-broker, dan broker-ke-broker.
  • Independen model broker: Spesifikasi AMQP 1.0 tidak membuat persyaratan apa pun pada model olah pesan yang digunakan oleh broker. Hal ini berarti bahwa dukungan AMQP 1.0 dapat ditambahkan dengan mudah ke broker pesan yang ada.

AMQP 1.0 adalah Standar (dengan modal 'S')

AMQP 1.0 adalah standar internasional, yang disetujui oleh ISO dan IEC sebagai ISO/IEC 19464:2014.

AMQP 1.0 telah dikembangkan sejak 2008 oleh kelompok inti lebih dari 20 perusahaan, baik pemasok teknologi maupun perusahaan pengguna akhir. Selama waktu itu, perusahaan pengguna telah menyumbangkan kebutuhan bisnis dunia nyata mereka dan vendor teknologi telah mengembangkan protokol untuk memenuhi kebutuhan tersebut. Sepanjang proses, vendor telah berpartisipasi dalam lokakarya dengan berkolaborasi untuk memastikan interoperabilitas antara implementasi mereka.

Pada Oktober 2011, pekerjaan pengembangan beralih ke komite teknis dalam Organisasi untuk Kemajuan Standar Informasi Terstruktur (OASIS) dan Standar OASIS AMQP 1.0 dirilis pada Oktober 2012. Perusahaan berikut berpartisipasi dalam komite teknis selama pengembangan standar:

  • Vendor teknologi: Axway Software, Huawei Technologies, IIT Software, INETCO Systems, Kaazing, Microsoft, Mitre Corporation, Primeton Technologies, Progress Software, Red Hat, SITA, Software AG, Solace Systems, VMware, WSO2, Zenika.
  • Perusahaan pengguna: Bank of America, Credit Suisse, Deutsche Boerse, Goldman Sachs, JPMorgan Chase.

Kursi Komite Teknis OASIS AMQP saat ini mewakili Red Hat dan Microsoft.

Beberapa manfaat standar terbuka yang umum dikutip meliputi:

  • Peluang penguncian vendor lebih kecil
  • Interoperabilitas
  • Pustaka dan alat tersedia lebih luas
  • Perlindungan terhadap keusangan
  • Ketersediaan staf yang berpengetahuan luas
  • Risiko yang lebih rendah dan mudah diatasi

AMQP 1.0 dan Azure Service Bus

Dukungan AMQP 1.0 di Azure Service Bus berarti Anda dapat menggunakan fitur antrean Azure Service Bus dan memublikasikan/berlangganan fitur olah pesan berperantara dari berbagai platform dengan menggunakan protokol biner yang efisien. Lebih lanjut, Anda dapat membuat aplikasi yang terdiri dari komponen yang dibuat menggunakan gabungan bahasa, kerangka kerja, dan sistem operasi.

Gambar berikut mengilustrasikan pengembangan contoh tempat klien Java dijalankan di Linux, yang ditulis menggunakan Java Message Service (JMS) API standar dan klien .NET yang dijalankan di Windows, bertukar pesan melalui Azure Service Bus menggunakan AMQP 1.0.

Diagram showing one Service Bus exchanging messages with two Linux environments and two Windows environments.

Gambar 1: Contoh skenario penyebaran yang memperlihatkan olah pesan lintas platform menggunakan Azure Service Bus dan AMQP 1.0

Semua pustaka klien Service Bus yang didukung yang tersedia melalui Azure SDK menggunakan AMQP 1.0.

Opsi protokol AMQP-over-WebSockets berjalan melalui port TCP 443 seperti halnya HTTP/REST API, tetapi sebaliknya secara fungsional identik dengan AMQP biasa. Opsi ini memiliki latensi koneksi awal yang lebih tinggi karena perjalanan pulang-pergi handshake ekstra dan sedikit lebih banyak overhead sebagai tradeoff untuk berbagi port HTTPS. Jika mode ini dipilih, port TCP 443 cukup untuk komunikasi. Opsi berikut memungkinkan Anda untuk memilih mode AMQP WebSockets.

Language Opsi
.NET (Azure.Messaging.ServiceBus) Buat ServiceBusClient dengan menggunakan konstruktor yang mengambil ServiceBusClientOptions sebagai parameter. Atur ServiceBusClientOptions.TransportType ke ServiceBusTransportType.AmqpWebSockets
.NET (Microsoft.Azure.ServiceBus) Saat membuat objek klien, gunakan konstruktor yang mengambil TransportType, ServiceBusConnection, atau ServiceBusConnectionStringBuilder sebagai parameter.

Untuk konstruksi yang mengambil transportType sebagai parameter, atur parameter ke TransportType.AmqpWebSockets.

Untuk konstruktor yang mengambil ServiceBusConnection sebagai parameter, atur ServiceBusConnection.TransportType ke TransportType.AmqpWebSockets.

Jika Anda menggunakan ServiceBusConnectionStringBuilder, gunakan konstruktor yang memberi Anda opsi untuk menentukan transportType.

Java (com.azure.messaging.servicebus) Saat membuat klien, atur ServiceBusClientBuilder.transportType ke AmqpTransportType.AMQP.AMQP_WEB_SOCKETS
Java (com.microsoft.azure.servicebus) Saat membuat klien, atur transportType pada com.microsoft.azure.servicebus.ClientSettings ke com.microsoft.azure.servicebus.primitives.TransportType.AMQP_WEB_SOCKETS
JavaScript Saat membuat objek klien Bus Layanan, gunakan properti webSocketOptions di ServiceBusClientOptions.
Python Saat membuat klien Bus Layanan, atur ServiceBusClient.transport_type ke TransportType.AmqpOverWebSocket

Pada 30 September 2026, kami akan menghentikan pustaka Azure Bus Layanan SDK WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus, dan com.microsoft.azure.servicebus, yang tidak sesuai dengan panduan Azure SDK. Kami juga akan mengakhiri dukungan protokol SBMP, sehingga Anda tidak akan lagi dapat menggunakan protokol ini setelah 30 September 2026. Migrasikan ke pustaka Azure SDK terbaru, yang menawarkan pembaruan keamanan penting dan kemampuan yang ditingkatkan, sebelum tanggal tersebut.

Meskipun pustaka lama masih dapat digunakan melebihi 30 September 2026, pustaka tersebut tidak akan lagi menerima dukungan dan pembaruan resmi dari Microsoft. Untuk informasi selengkapnya, lihat pengumuman penghentian dukungan.

Selain itu, Anda dapat menggunakan Azure Service Bus dari tumpukan protokol yang mematuhi AMQP 1.0:

Language Pustaka
Java Apache Qpid Proton-J
C/C++ Azure uAMQP C, Apache Qpid Proton-C
Python Azure uAMQP untuk Python, Apache Qpid Proton Python
PHP Azure uAMQP untuk PHP
Ruby Apache Qpid Proton Ruby
Go Azure Go AMQP, Apache Qpid Proton Go
C#/F#/VB AMQP .NET Lite, Apache NMS AMQP
JavaScript/Simpul Rhea

Ringkasan

  • AMQP 1.0 adalah protokol olah pesan terbuka dan andal yang dapat digunakan untuk membuat aplikasi lintas platform hibrid. AMQP 1.0 adalah standar OASIS.

Langkah berikutnya

Siap mempelajari lebih lanjut? Kunjungi tautan berikut: