Exchange menerima pesan dari produsen dan mengirimkannya ke satu atau beberapa Antrian berdasarkan aturan routing. Setiap tipe exchange menggunakan strategi routing yang berbeda—exchange direct mencocokkan kunci routing secara eksak, sedangkan exchange fanout menyiarkan pesan ke semua Antrian yang terikat (bound). Jika tidak ada Antrian yang cocok, exchange akan membuang pesan tersebut.
Tipe Exchange
Pilih tipe exchange yang sesuai dengan kebutuhan routing Anda.
Type | Routing behavior | Use when |
direct | Mengirimkan pesan ke Antrian yang kunci binding-nya persis sama dengan kunci routing pesan. | Anda memerlukan pengiriman pesan satu-ke-satu berdasarkan kunci eksak, seperti mengarahkan event |
topic | Mengirimkan pesan ke Antrian berdasarkan pencocokan pola antara kunci routing pesan dan pola binding. Mendukung wildcard | Anda memerlukan routing fleksibel, seperti mengarahkan |
fanout | Mengirimkan semua pesan ke setiap Antrian yang terikat, tanpa memperhatikan kunci routing. | Anda perlu menyiarkan pesan ke beberapa konsumen, seperti mendorong notifikasi ke semua klien yang terhubung. |
headers | Mengirimkan pesan berdasarkan atribut header pesan, bukan kunci routing. Menggunakan argumen | Anda memerlukan routing berdasarkan beberapa atribut, bukan hanya satu kunci routing. |
x-delayed-message | Menahan pesan selama durasi tertentu sebelum mengirimkannya. Atur penundaan dalam milidetik menggunakan header pesan | Anda perlu menunda pengiriman pesan, seperti mengirim notifikasi pengingat 30 menit setelah suatu event. |
x-consistent-hash | Mengirimkan pesan ke Antrian menggunakan consistent hashing pada kunci routing atau nilai header, sehingga mendistribusikan beban ke beberapa Antrian. | Anda memerlukan distribusi pesan yang merata di antara sejumlah Antrian konsumen untuk Pemrosesan paralel. |
Buat Exchange
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Instans ApsaraMQ for RabbitMQ
vhost tempat exchange akan dibuat
Prosedur
Masuk ke Konsol ApsaraMQ for RabbitMQ. Di panel navigasi kiri, klik Instances.
Di bilah navigasi atas, pilih wilayah instans Anda. Klik nama instans tersebut.
Di panel navigasi kiri, klik Exchanges.
Di halaman Exchanges, klik tombol Change di samping vhost. Dari daftar drop-down, pilih vhost target. Lalu, klik Create Exchange.
Di panel Create Exchange, konfigurasikan parameter berikut lalu klik OK.
Parameter
Description
Exchange Name
Nama exchange. Awalan
amq.bersifat reservasi dan tidak dapat digunakan. Misalnya,amq.testbukan nama yang valid.Type
Tipe exchange.
x-delayed-type
Diperlukan saat Type adalah
x-delayed-message. Menentukan strategi routing dasar (direct, topic, fanout, headers, atau x-jms-topic).Hash value
Diperlukan saat Type adalah
x-consistent-hash. Menentukan sumber input hash: RoutingKey atau Header Value.hash-header
Diperlukan saat Hash value diatur ke Header Value. Menentukan kunci header yang digunakan sebagai input hash.
Internal
Apakah exchange bersifat internal. Default: No. Atur ke Yes untuk membuat exchange internal yang hanya menerima pesan dari exchange lain (bukan langsung dari produsen). Atur ke No untuk exchange standar yang terikat ke Antrian.
Ikat Exchange ke Antrian
Ikat exchange ke Antrian untuk menentukan tujuan pengiriman pesan oleh exchange tersebut.
Di halaman Exchanges, temukan exchange tersebut lalu klik Bound as Source di kolom Actions.
Di tab Bound as Source pada halaman Exchange Details, klik Add Binding.
Di panel Add Binding, atur Type of Destination to Bind ke Queue, pilih Antrian dari daftar drop-down Destination to Bind, konfigurasikan Routing Key, lalu klik OK.
Untuk exchange x-consistent-hash, nilai Routing Key menentukan bobot Antrian (bilangan bulat dari 1 hingga 20). Untuk mengubah bobot, hapus binding yang ada dan buat yang baru.
Jika sebuah exchange diikat ke Antrian yang sama beberapa kali, hanya binding pertama yang cocok yang berlaku.
Ikat Exchange ke Exchange Lain
Teruskan pesan ke exchange lain (source binding)
Konfigurasikan exchange saat ini sebagai sumber untuk meneruskan pesannya ke exchange downstream berdasarkan aturan routing.
Di halaman Exchanges, temukan exchange tersebut lalu klik Bound as Source di kolom Actions.
Di tab Bound as Source, klik Add Binding.
Di panel Add Binding, atur Type of Destination to Bind ke Exchange, pilih exchange tujuan dari daftar drop-down Destination to Bind, konfigurasikan Routing Key, lalu klik OK.
Terima pesan dari exchange lain (destination binding)
Konfigurasikan exchange saat ini sebagai tujuan untuk menerima pesan dari exchange upstream.
Di halaman Exchanges, temukan exchange tersebut lalu klik Details di kolom Actions.
Di halaman Exchange Details, klik tab Bound as Destination. Klik Add Binding.
Di panel Add Binding, pilih exchange sumber dari daftar drop-down Source Exchange, masukkan kunci routing, pertahankan nilai default untuk Type of Destination to Bind dan Destination Exchange, lalu klik OK.
Kirim Pesan
Setelah mengikat exchange, Anda dapat mengirim pesan dari exchange ke Antrian yang terikat atau dari exchange tujuan ke exchange sumber melalui Konsol ApsaraMQ for RabbitMQ.
Di halaman Exchanges, temukan exchange tersebut lalu klik Details di kolom Actions.
Di pojok kanan atas halaman Exchange Details, klik Send Message.
Di panel Send Message, masukkan Routing Key, pilih nilai untuk mandatory (true atau false), masukkan Message ID dan Message Body, lalu klik OK.
Lihat Statistik Exchange
Lihat metrik exchange untuk memantau routing pesan dan mengidentifikasi masalah.
Di halaman Exchanges, temukan exchange tersebut lalu klik Details di kolom Actions.
Di halaman Exchange Details, klik tab Dashboard.
Metrik yang tersedia bergantung pada edisi instans Anda:
Instance edition | Monitoring source | Details |
Edisi Perusahaan, Edisi Platinum Perusahaan | Managed Service for Prometheus dan Managed Service for Grafana | Lihat Dashboard. |
Edisi Profesional, Edisi Standar | CloudMonitor | Lihat Pemantauan dan Peringatan. |
Instans Edisi Standar tidak lagi tersedia untuk pembelian baru. Instans Edisi Standar yang sudah ada tetap berfungsi.
Hapus Exchange
Setelah Anda menghapus exchange, produsen tidak dapat lagi mengirim pesan ke exchange tersebut, dan exchange tidak dapat lagi mengirimkan pesan ke satu atau beberapa Antrian atau membuang pesan. Lakukan dengan hati-hati.
Exchange bertipe
headerstidak dapat dihapus.Exchange bawaan vhost (
amq.direct,amq.topic,amq.fanout,amq.headers, danamq.match) tidak dapat dihapus.
Di halaman Exchanges, klik nama exchange yang akan dihapus.
Di pojok kanan atas halaman Exchange Details, klik Delete.
Di dialog konfirmasi Note, klik OK.
Referensi
Untuk informasi lebih lanjut tentang konsep dan arsitektur exchange, lihat Exchange.