

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan Amazon MQ untuk RabbitMQ
<a name="working-with-rabbitmq"></a>

Amazon MQ memudahkan pembuatan broker pesan dengan sumber daya komputasi dan penyimpanan yang sesuai dengan kebutuhan Anda. Anda dapat membuat, mengelola, dan menghapus broker menggunakan Konsol Manajemen AWS, Amazon MQ REST API, atau. AWS Command Line Interface

Bagian ini menjelaskan elemen dasar broker pesan untuk jenis mesin ActiveMQ dan RabbitMQ, daftar tipe instans broker Amazon MQ yang tersedia dan statusnya, serta memberikan gambaran umum tentang arsitektur broker juga opsi konfigurasi.

Untuk mempelajari tentang Amazon MQ REST APIs, lihat Referensi API *[Amazon MQ](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/)* REST.

## Apa itu Amazon MQ untuk broker RabbitMQ?
<a name="rabbitmq-basic-elements-broker"></a>

 *Broker* adalah lingkungan broker pesan yang berjalan di Amazon MQ. Ini adalah blok bangunan dasar Amazon MQ. Deskripsi gabungan dari *kelas* instance broker (`m7g`) dan *size* (`large`,`medium`) disebut *tipe instance broker* (misalnya,`mq.m7g.large`). 
+ Broker *single instance terdiri dari satu broker* dalam satu Availability Zone di belakang Network Load Balancer (NLB). Broker berkomunikasi dengan aplikasi Anda dan dengan volume penyimpanan Amazon EBS.
+ *Deployment klaster* adalah pengelompokan logis dari tiga node broker RabbitMQ di balik Penyeimbang Beban Jaringan, masing-masing membagikan pengguna, antrean, dan status terdistribusi di beberapa Availability Zone (AZ).

Untuk informasi lebih lanjut, lihat [Menerapkan broker RabbitMQ](rabbitmq-broker-architecture.md).

### Port listener
<a name="rabbitmq-broker-listeners"></a>

 Broker RabbitMQ yang dikelola Amazon MQ mendukung port pendengar berikut untuk konektivitas tingkat aplikasi melalui. `amqps` Anda juga dapat menggunakan port ini untuk koneksi klien menggunakan konsol web RabbitMQ dan API manajemen. Semua koneksi menggunakan enkripsi TLS untuk keamanan. 
+ Port pendengar `5671` - Digunakan untuk koneksi AMQP aman yang dibuat melalui URL AMQP yang aman. Port ini mendukung protokol AMQP 0-9-1 dan AMQP 1.0 di RabbitMQ 4. Sebagai contoh, broker dengan ID broker `b-c8352341-ec91-4a78-ad9c-a43f23d325bb`, di-deploy di wilayah `us-west-2`, berikut adalah URL lengkap `amqps` broker: `b-c8352341-ec91-4a78-ad9c-a43f23d325bb.mq.us-west-2.amazonaws.com:5671`.
+ Port pendengar `443` dan `15671` - Anda dapat menggunakan kedua port pendengar secara bergantian untuk mengakses broker melalui konsol web RabbitMQ atau API manajemen. Port 443 menyediakan akses HTTPS standar, sedangkan port 15671 adalah port manajemen RabbitMQ tradisional dengan enkripsi TLS.

### Atribut
<a name="broker-attributes"></a>

Broker RabbitMQ memiliki beberapa atribut:
+ Nama. Misalnya, `MyBroker`.
+ ID. Misalnya, `b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9`.
+ Amazon Resource Name (ARN). Misalnya, `arn:aws:mq:us-east-2:123456789012:broker:MyBroker:b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9`.
+ URL konsol web RabbitMQ. Misalnya, `https://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com`.

  Untuk informasi selengkapnya, lihat [konsol web RabbitMQ](https://www.rabbitmq.com/management.html) dalam dokumentasi RabbitMQ.
+ Titik akhir aman AMQP. Misalnya, `amqps://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com`.

Untuk daftar lengkap atribut broker, lihat di *Referensi REST API Amazon MQ*:
+ [ID Operasi REST: Broker](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-broker.html)
+ [ID Operasi REST: Broker](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-brokers.html)
+ [ID Operasi REST: Reboot Broker](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-broker-reboot.html)

# Mengelola Amazon MQ untuk versi mesin RabbitMQ
<a name="rabbitmq-version-management"></a>

 RabbitMQ mengatur nomor versi sesuai dengan spesifikasi versi semantik sebagai. `X.Y.Z` Di Amazon MQ untuk implementasi RabbitMQ, `X` menunjukkan versi utama, `Y` mewakili versi minor, dan menunjukkan nomor versi patch. `Z` Amazon MQ menganggap perubahan versi sebagai utama jika nomor versi utama berubah. Misalnya, memutakhirkan dari versi **3** .13 ke **4** .0 dianggap sebagai peningkatan versi utama. Perubahan versi dianggap kecil jika hanya nomor versi minor atau patch yang berubah. Misalnya, memutakhirkan dari versi 3. **11** .28 hingga 3. **12.13** dianggap sebagai peningkatan versi minor. 

 Amazon MQ untuk RabbitMQ merekomendasikan semua broker menggunakan versi terbaru yang didukung RabbitMQ 4.2. Untuk petunjuk tentang cara meningkatkan versi mesin broker Anda, lihat [Memutakhirkan versi mesin broker Amazon MQ](upgrading-brokers.md). 

 Saat Anda membuat Amazon MQ baru untuk broker RabbitMQ, Anda hanya perlu menentukan nomor versi mayor dan minor. Misalnya, RabbitMQ 4.2. Jika Anda tidak menentukan versi mesin saat membuat broker, Amazon MQ secara otomatis default ke versi mesin terbaru. 

**penting**  
[Amazon MQ tidak mendukung streaming.](https://www.rabbitmq.com/streams.html) Membuat aliran akan mengakibatkan hilangnya data.  
Amazon MQ tidak mendukung penggunaan logging terstruktur di JSON.

Amazon MQ mendukung dua rilis versi utama RabbitMQ:
+ [**KelinciMQ 4**](rabbitmq-4.md)

  Amazon MQ mendukung RabbitMQ 4.2 dalam seri rilis RabbitMQ 4 hanya pada jenis instans mq.m7g di semua ukuran instans yang didukung.
+ **KelinciMQ 3**

  Amazon MQ mendukung RabbitMQ 3.13 dalam seri rilis RabbitMQ 3 pada jenis instans mq.t3, mq.m5, dan mq.m7g di semua ukuran instans yang didukung.

## Membuat daftar versi mesin yang didukung
<a name="rabbitmq-version-management-listing-versions"></a>

 Anda dapat membuat daftar semua versi mesin minor dan utama yang didukung dengan menggunakan [https://docs.aws.amazon.com/cli/latest/reference/mq/describe-broker-instance-options.html](https://docs.aws.amazon.com/cli/latest/reference/mq/describe-broker-instance-options.html) AWS CLI perintah. 

```
aws mq describe-broker-instance-options
```

Untuk memfilter hasil menurut mesin dan jenis instans, gunakan opsi `--engine-type` dan `--host-instance-type` seperti yang ditampilkan di bawah.

```
aws mq describe-broker-instance-options --engine-type engine-type --host-instance-type instance-type
```

Misalnya, untuk memfilter hasil untuk RabbitMQ, dan jenis `mq.m7g.large` instance, ganti *engine-type* dengan dan dengan`RABBITMQ`. *instance-type* `mq.m7g.large`

# KelinciMQ 4
<a name="rabbitmq-4"></a>

Amazon MQ mendukung RabbitMQ 4.2 dalam seri rilis RabbitMQ 4 hanya pada jenis instans mq.m7g di semua ukuran instans yang didukung.

**penting**  
Anda hanya dapat membuat broker baru di RabbitMQ 4.2. Upgrade di tempat dari RabbitMQ 3.13 saat ini tidak didukung.

**penting**  
 Jenis antrian default di Amazon MQ untuk broker RabbitMQ 4.2 adalah “kuorum”. Jika tidak ada argumen tipe antrian yang ditentukan selama pembuatan antrian, antrian kuorum akan dibuat.   
 Kami sangat merekomendasikan penggunaan antrian kuorum pada RabbitMQ 4 untuk kebutuhan daya tahan, karena antrian klasik tidak dijamin tahan lama dalam semua kasus. 

## Perubahan berikut telah diperkenalkan di RabbitMQ 4 di Amazon MQ
<a name="rabbitmq-4-new-features"></a>
+ **AMQP 1.0 sebagai protokol inti:** [Untuk informasi selengkapnya, lihat Protokol.](rabbitmq-supported-protocols.md)
+ **Sekop lokal:** Sekop sekarang mendukung protokol baru yang disebut “lokal” selain AMQP 0-9-1 dan AMQP 1.0. Sekop lokal secara internal didasarkan pada AMQP 1.0 tetapi alih-alih menggunakan koneksi TCP terpisah, mereka menggunakan koneksi intra-cluster antara node cluster dan internal untuk menerbitkan dan mengkonsumsi pesan. APIs Ini hanya dapat digunakan untuk mengkonsumsi dan menerbitkan dalam cluster yang sama dan dapat menawarkan throughput yang lebih tinggi saat menggunakan sumber daya yang lebih sedikit daripada AMQP 0-9-1 dan AMQP 1.0.
+ **Antrian kuorum mendukung prioritas pesan: Prioritas** pesan antrian kuorum selalu aktif dan tidak memerlukan kebijakan untuk bekerja. Segera setelah antrian kuorum menerima pesan dengan set prioritas, itu akan memungkinkan prioritas. Antrian kuorum secara internal hanya mendukung dua prioritas - tinggi dan normal. Pesan tanpa set prioritas akan dipetakan ke normal seperti halnya prioritas 0 - 4. Pesan dengan prioritas lebih tinggi dari 4 akan dipetakan ke tinggi. Pesan prioritas tinggi akan lebih disukai daripada pesan prioritas normal dengan rasio 2:1, yaitu untuk setiap 2 pesan prioritas tinggi, antrian akan mengirimkan 1 pesan prioritas normal (jika tersedia). Oleh karena itu, antrian kuorum menerapkan semacam pemrosesan prioritas “pembagian yang adil” yang tidak ketat. Ini memastikan kemajuan selalu dibuat pada pesan prioritas normal, tetapi prioritas tinggi disukai pada rasio 2:1.
+ **Khepri: Khepri** digunakan sebagai toko metadata default untuk broker RabbitMQ 4
+ **Mutual TLS (MTLS):** Amazon MQ mendukung TLS bersama (MTLS) untuk broker RabbitMQ, memungkinkan klien untuk mengautentikasi menggunakan sertifikat. Untuk informasi selengkapnya, lihat [konfigurasi mTLS](configure-mtls.md).
+ Plugin **otentikasi sertifikat SSL: Plugin** otentikasi SSL menggunakan sertifikat klien dari koneksi mTLS untuk mengautentikasi pengguna, memungkinkan otentikasi menggunakan sertifikat klien X.509 alih-alih kredensyal nama pengguna dan kata sandi. Untuk informasi selengkapnya, lihat [otentikasi sertifikat SSL](ssl-for-amq-for-rabbitmq.md).
+ Plugin **otentikasi HTTP: Plugin** backend otentikasi HTTP memungkinkan pendelegasian otentikasi dan otorisasi ke layanan HTTP eksternal. Untuk informasi selengkapnya, lihat [otentikasi dan otorisasi HTTP](http-for-amq-for-rabbitmq.md).
+ **Dukungan JMS:** [Broker sekarang mendukung beban kerja JMS dengan plugin pertukaran topik JMS diaktifkan, memungkinkan aplikasi JMS untuk terhubung menggunakan klien RabbitMQ JMS.](https://github.com/rabbitmq/rabbitmq-jms-client)

## Fitur-fitur berikut tidak digunakan lagi dari RabbitMQ 4 di Amazon MQ
<a name="rabbitmq-4-deprecations"></a>
+ **Mencerminkan antrian klasik:** Antrian klasik terus didukung tanpa ada perubahan yang merusak untuk pustaka dan aplikasi klien, tetapi sekarang merupakan tipe antrian yang tidak direplikasi. Klien akan dapat terhubung ke node mana pun untuk dipublikasikan dan dikonsumsi dari antrian klasik yang tidak direplikasi. Antrian kuorum direkomendasikan untuk replikasi dan keamanan data.
+ **Penghapusan QoS Global:** Pelanggan disarankan untuk mengatur QoS per konsumen (non-global) alih-alih QoS Global, di mana satu prefetch bersama digunakan untuk seluruh saluran.
+ **Support untuk antrian transien dan non-eksklusif: Antrian** sementara adalah antrian yang masa pakainya terkait dengan waktu aktif node tempat mereka dideklarasikan. Dalam satu contoh broker, mereka dihapus ketika node dimulai ulang. Dalam penerapan cluster, mereka dihapus ketika node tempat mereka di-host dimulai ulang. Sebaiknya gunakan antrian TTL untuk menghapus antrian idle yang tidak digunakan secara otomatis setelah beberapa saat tidak aktif. Antrian eksklusif terus didukung dan dihapus setelah semua koneksi ke antrian telah dihapus.

## Perubahan yang melanggar berikut dapat memengaruhi aplikasi Anda saat meningkatkan ke RabbitMQ 4.2 di Amazon MQ
<a name="rabbitmq-4-breaking-changes"></a>
+  Jenis **antrian default: Jenis** antrian default pada broker RabbitMQ 4 diatur ke kuorum. Jika tidak ada argumen tipe antrian yang ditentukan selama pembuatan antrian, antrian kuorum akan dibuat. 
+ **Batas pengiriman ulang default pada antrian kuorum disetel ke 20: Pesan yang dikirim ulang 20** kali atau lebih akan diberi huruf mati atau dibatalkan (dihapus). Jika 20 pengiriman per pesan adalah skenario umum untuk antrian, target huruf mati atau batas yang lebih tinggi harus dikonfigurasi untuk antrian tersebut untuk menghindari kehilangan data. Cara yang disarankan untuk melakukannya adalah melalui kebijakan.
+ **amqplib: Versi amqplib** **klien Node JS yang lebih lama dari 0.10.7** atau pustaka klien AMQP apa pun yang menggunakan **frame\$1max** < 8192 tidak akan dapat terhubung ke RabbitMQ
+ [Batas sumber daya default:](rabbitmq-resource-limits-configuration.md) Amazon MQ untuk RabbitMQ telah memperkenalkan batas penggunaan sumber daya default untuk koneksi, saluran, konsumen per saluran, antrian, vhost, sekop, pertukaran, dan ukuran pesan maksimum. Ini berfungsi sebagai pagar pembatas untuk melindungi ketersediaan broker dan dapat disesuaikan menggunakan konfigurasi agar sesuai dengan kebutuhan spesifik Anda.

## Fitur-fitur berikut tidak didukung pada RabbitMQ 4 di Amazon MQ
<a name="rabbitmq-4-not-supported"></a>
+ **Pertukaran acak lokal:** Pertukaran acak lokal tidak didukung di Amazon MQ karena node Amazon MQ berada di belakang penyeimbang beban jaringan.
+ **Pencegat Pesan: Pencegat** [pesan RabbitMQ tidak didukung di Amazon](https://www.rabbitmq.com/docs/message-interceptors) MQ.
+  Metrik **per antrian: Amazon MQ tidak akan menjual metrik** antrian RabbitMQ untuk broker RabbitMQ 4 melalui. AWS CloudWatch Amazon MQ masih akan memberikan metrik tingkat broker melalui. AWS CloudWatch Anda dapat melakukan kueri metrik antrian menggunakan API manajemen RabbitMQ. Sebaiknya kueri metrik untuk antrian tertentu pada frekuensi interval satu menit atau lebih lama. 

# Dukungan versi RabbitMQ
<a name="rabbitmq-version-support"></a>

 Kalender dukungan versi Amazon MQ di bawah ini menunjukkan kapan versi mesin broker akan mencapai akhir dukungan. Ketika versi mencapai akhir dukungan, Amazon MQ meningkatkan semua broker pada versi ini ke versi yang didukung berikutnya secara otomatis. Upgrade ini berlangsung selama jendela pemeliharaan terjadwal broker Anda, dalam waktu 45 hari setelah end-of-support tanggal. 

 Amazon MQ menyediakan setidaknya pemberitahuan 90 hari sebelum versi mencapai akhir dukungan. Kami merekomendasikan untuk meningkatkan broker Anda sebelum end-of-support tanggal untuk mencegah gangguan apa pun. Selain itu, Anda tidak dapat membuat broker baru pada versi yang dijadwalkan untuk akhir dukungan dalam waktu 30 hari sejak akhir tanggal dukungan. 


| Versi RabbitMQ | Akhir dukungan di Amazon MQ | 
| --- | --- | 
| 4.2 (Direkomendasikan) |   | 
| 3.13 |   | 
| 3.12 | Maret 17, 2025 | 

# Upgrade versi
<a name="version-upgrades"></a>

 Anda dapat meningkatkan broker Anda secara manual kapan saja ke versi mayor atau minor yang didukung berikutnya. Untuk informasi selengkapnya tentang meningkatkan broker Anda secara manual, lihat [Memutakhirkan versi mesin broker Amazon MQ](upgrading-brokers.md). 

 Amazon MQ mengelola peningkatan ke versi patch terbaru yang didukung untuk semua broker RabbitMQ menggunakan versi 3.13 ke atas. Peningkatan versi manual dan otomatis terjadi selama jendela pemeliharaan terjadwal atau setelah Anda melakukan boot ulang broker. 

**penting**  
RabbitMQ hanya mengizinkan pembaruan versi tambahan (mis: 3.9.x hingga 3.10.x). Anda tidak dapat melewati versi minor saat memperbarui (mis: 3.8.x ke 3.11.x).

 Pialang instans tunggal akan offline saat di-boot ulang. Untuk broker cluster, antrian cermin harus disinkronkan selama reboot. Dengan antrian yang lebih panjang, proses sinkronisasi antrian bisa memakan waktu lebih lama. Selama proses sinkronisasi antrian, antrian tidak tersedia untuk konsumen dan produsen. Ketika proses sinkronisasi antrian selesai, broker menjadi tersedia lagi. Untuk meminimalkan dampak, kami sarankan untuk meningkatkan selama waktu lalu lintas rendah. Untuk informasi selengkapnya tentang praktik terbaik untuk peningkatan versi, lihat[Amazon MQ untuk praktik terbaik RabbitMQ](best-practices-rabbitmq.md). 

# Opsi penyebaran untuk Amazon MQ untuk broker RabbitMQ
<a name="rabbitmq-broker-architecture"></a>

Broker RabbitMQ dapat dibuat sebagai *broker instans tunggal* atau dalam *deployment klaster*. Untuk kedua mode deployment, Amazon MQ memberikan daya tahan tinggi dengan menyimpan data secara redundan.

Anda dapat mengakses broker RabbitMQ menggunakan [bahasa pemrograman yang didukung RabbitMQ](https://www.rabbitmq.com/devtools.html) dan dengan mengaktifkan TLS untuk protokol berikut:
+ [AMQP (0-9-1)](https://www.rabbitmq.com/specification.html)

**Topics**
+ [Opsi 1: Amazon MQ untuk broker instans tunggal RabbitMQ](#rabbitmq-broker-architecture-single-instance)
+ [Opsi 2: Amazon MQ untuk penyebaran cluster RabbitMQ](#rabbitmq-broker-architecture-cluster)

## Opsi 1: Amazon MQ untuk broker instans tunggal RabbitMQ
<a name="rabbitmq-broker-architecture-single-instance"></a>

*Broker instans tunggal* terdiri dari satu broker di satu Availability Zone di balik Penyeimbang Beban Jaringan (NLB). Broker berkomunikasi dengan aplikasi Anda dan dengan volume penyimpanan Amazon EBS. Amazon EBS menyediakan penyimpanan tingkat blok yang dioptimalkan untuk latensi rendah dan throughput tinggi.

 Menggunakan Network Load Balancer memastikan bahwa titik akhir Amazon MQ untuk broker RabbitMQ Anda tetap tidak berubah jika instans broker diganti selama jendela pemeliharaan atau karena kegagalan perangkat keras Amazon yang mendasarinya. EC2 Penyeimbang Beban Jaringan memungkinkan aplikasi dan pengguna Anda untuk terus menggunakan titik akhir yang sama untuk terhubung ke broker.

Diagram berikut mengilustrasikan broker instans tunggan Amazon MQ for RabbitMQ.

![\[Diagram showing client, load balancer, Amazon MQ broker, and EBS volume in AWS Cloud.\]](http://docs.aws.amazon.com/id_id/amazon-mq/latest/developer-guide/images/amazon-mq-rabbitmq-broker-architecture-single-broker.png)


## Opsi 2: Amazon MQ untuk penyebaran cluster RabbitMQ
<a name="rabbitmq-broker-architecture-cluster"></a>

*Deployment klaster* adalah pengelompokan logis dari tiga node broker RabbitMQ di balik Penyeimbang Beban Jaringan, masing-masing membagikan pengguna, antrean, dan status terdistribusi di beberapa Availability Zone (AZ).

Dalam deployment klaster, Amazon MQ mengelola kebijakan broker secara otomatis untuk mengaktifkan pencerminan klasik di semua simpul, memastikan ketersediaan tinggi (HA). Setiap antrian yang dicerminkan terdiri dari satu simpul *utama* dan satu atau lebih *cermin*. Setiap antrean memiliki simpul utamanya sendiri. Semua operasi untuk antrean yang diberikan pertama-tama diterapkan pada simpul utama antrean lalu disebarkan ke cermin. Amazon MQ membuat kebijakan sistem default yang menetapkan `ha-mode ` ke `all` dan `ha-sync-mode` ke `automatic`. Hal ini memastikan bahwa data direplikasi ke semua simpul dalam klaster di Availability Zone yang berbeda untuk daya tahan yang lebih baik.

**catatan**  
 Dalam penerapan klaster, jika terjadi pemadaman Availability Zone, Amazon MQ akan secara otomatis mencoba memindahkan node RabbitMQ yang terpengaruh ke AZ yang berbeda untuk mempertahankan ukuran cluster. Setelah pemadaman selesai, cluster akan secara otomatis diseimbangkan kembali di seluruh. AZs 

**catatan**  
Selama *jendela pemeliharaan*, semua pemeliharaan ke klaster dilakukan satu simpul pada satu waktu, menjaga setidaknya dua simpul berjalan setiap saat. Setiap kali simpul dinonaktifkan, koneksi klien ke simpul tersebut diputus dan perlu dibuat lagi. Anda harus memastikan bahwa kode klien dirancang untuk terhubung kembali secara otomatis ke klaster Anda. Untuk informasi selengkapnya tentang pemulihan koneksi, lihat [Langkah 1: Secara otomatis pulih dari kegagalan jaringan](best-practices-network-resilience.md#automatically-recover-from-network-failures).  
Karena Amazon MQ menetapkan `ha-sync-mode: automatic`, selama jendela pemeliharaan, antrean akan menyinkronkan ketika setiap simpul kembali menggabungkan klaster. Sinkronisasi antrian memblokir semua operasi antrean lainnya. Anda dapat mengurangi dampak sinkronisasi antrean selama jendela pemeliharaan dengan membuat antrian tetap pendek.

Kebijakan default tidak boleh dihapus. Jika Anda menghapus kebijakan ini, Amazon MQ akan secara otomatis membuatnya kembali. Amazon MQ juga akan memastikan bahwa properti HA diterapkan ke semua kebijakan lain yang Anda buat pada broker terklaster. Jika Anda menambahkan kebijakan tanpa properti HA, Amazon MQ akan menambahkannya untuk Anda. Jika Anda menambahkan kebijakan dengan properti ketersediaan tinggi yang berbeda, Amazon MQ akan menggantinya. Untuk informasi selengkapnya tentang pencerminan klasik, lihat Antrian [cermin klasik](https://www.rabbitmq.com/ha.html).

 Diagram berikut mengilustrasikan deployment broker klaster RabbitMQ dengan tiga simpul di tiga Availability Zone (AZ), masing-masing dengan volume Amazon EBS sendiri dan status bersama. Amazon EBS menyediakan penyimpanan tingkat blok yang dioptimalkan untuk latensi rendah dan throughput tinggi. 

![\[Mengilustrasikan arsitektur broker deployment klaster untuk broker RabbitMQ.\]](http://docs.aws.amazon.com/id_id/amazon-mq/latest/developer-guide/images/amazon-mq-rabbitmq-broker-architecture-cluster-broker.png)


# Amazon MQ untuk jenis instans broker RabbitMQ
<a name="rmq-broker-instance-types"></a>

Deskripsi gabungan dari kelas instance broker (m7g) dan ukuran (besar, sedang) disebut tipe instance broker (misalnya, mq.m7g.large).

Sebaiknya gunakan tipe instans mq.m7g untuk penerapan cluster dan single instance.

Amazon MQ menyediakan setidaknya pemberitahuan 90 hari sebelum jenis instans mencapai akhir dukungan. Kami merekomendasikan untuk meningkatkan broker Anda ke jenis instans baru sebelum end-of-support tanggal untuk mencegah gangguan apa pun.

**penting**  
Anda tidak dapat menurunkan versi broker dari tipe `mq.m7g` atau `mq.m5` instance ke tipe `mq.t3.micro` instans.  
Jenis `mq.t3.micro` instance tidak mendukung penerapan klaster.

## Jenis instans untuk penerapan klaster m7g
<a name="instance-types-m7g-cluster"></a>

Kami merekomendasikan penggunaan tipe `mq.m7g.x` instance dengan penerapan cluster. Tabel berikut menunjukkan jenis `mq.m7g.x` instance yang tersedia untuk penyebaran cluster.


| Tipe Instans | vCPU | Memori (GiB) | Garis Dasar Jaringan/Bandwidth Burst (Gbps)  | Penggunaan yang disarankan | Penyimpanan | Ukuran volume disk per node (GB) | 
| --- | --- | --- | --- | --- | --- | --- | 
| mq.m7g.medium | 1 | 4 | 0,52/12,5 |   Evaluasi   | EBS | 5 | 
| mq.m7g.large | 2 | 8 | 0,937/12,5 |   Produksi   | EBS | 15 | 
| mq.m7g.xlarge | 4 | 16 | 1.876/12,5 |   Produksi   | EBS | 25 | 
| mq.m7g.2xlarge | 8 | 32 | 3,75/15,0 |   Produksi   | EBS | 45 | 
| mq.m7g.4xlarge | 16 | 64 | 7,5/15,0 |   Produksi   | EBS | 90 | 
| mq.m7g.8xlarge | 32 | 128 | 15 Gigabit |   Produksi   | EBS | 175 | 
| mq.m7g.12xlarge | 48 | 192 | 22,5 Gigabit |   Produksi   | EBS | 260 | 
| mq.m7g.16xlarge | 64 | 256 | 30 Gigabit |   Produksi   | EBS | 345 | 

## Jenis instans untuk penerapan instans tunggal m7g
<a name="instance-types-m7g-single-instance"></a>

 Tabel berikut menunjukkan jenis `mq.m7g.x` instance yang tersedia untuk penyebaran instance tunggal. 


| Tipe Instans | vCPU | Memori (GiB) | Garis Dasar Jaringan/Bandwidth Burst (Gbps)  | Penggunaan yang disarankan | Penyimpanan | Ukuran volume disk per node (GB) | 
| --- | --- | --- | --- | --- | --- | --- | 
| mq.m7g.medium | 1 | 4 | 0,52/12,5 |   Evaluasi   | EBS | 200 | 
| mq.m7g.large | 2 | 8 | 0,937/12,5 |   Produksi   | EBS | 200 | 
| mq.m7g.xlarge | 4 | 16 | 1.876/12,5 |   Produksi   | EBS | 200 | 
| mq.m7g.2xlarge | 8 | 32 | 3,75/15,0 |   Produksi   | EBS | 200 | 
| mq.m7g.4xlarge | 16 | 64 | 7,5/15,0 |   Produksi   | EBS | 200 | 
| mq.m7g.8xlarge | 32 | 128 | 15 Gigabit |   Produksi   | EBS | 200 | 
| mq.m7g.12xlarge | 48 | 192 | 22,5 Gigabit |   Produksi   | EBS | 200 | 
| mq.m7g.16xlarge | 64 | 256 | 39 Gigabit |   Produksi   | EBS | 200 | 

## Jenis instans untuk penyebaran instance `mq.m5` tunggal
<a name="instance-types-m5-single-instance"></a>

 Tabel berikut menunjukkan jenis `mq.m5.x` instance yang tersedia untuk penyebaran instance tunggal 


| Tipe Instans | vCPU | Memori (GiB) | Garis Dasar Jaringan/Bandwidth Burst (Gbps)  | Penggunaan yang disarankan | Penyimpanan | Ukuran volume disk per node (GB) | 
| --- | --- | --- | --- | --- | --- | --- | 
| mq.t3.mikro | 2 | 1 | 0,064/5.0 | Evaluasi | EBS | 20 | 
| mq.m5.large | 2 | 8 | 0,75/10.0 | Produksi | EBS | 200 | 
| mq.m5.xlarge | 4 | 16 | 1.25/10.0 | Produksi | EBS | 200 | 
| mq.m5.2xlarge | 8 | 32 | 2.5/10.0 | Produksi | EBS | 200 | 
| mq.m5.4xlarge | 16 | 64 | 5.0/10.0 | Produksi | EBS | 200 | 

## Jenis instans untuk penerapan `mq.m5` klaster
<a name="instance-types-m5-cluster"></a>

 Tabel berikut menunjukkan jenis `mq.m5.x` instance yang tersedia untuk penyebaran cluster 


| Tipe Instans | vCPU | Memori (GiB) | Garis Dasar Jaringan/Bandwidth Burst (Gbps)  | Penggunaan yang disarankan | Penyimpanan | Ukuran volume disk per node (GB) | 
| --- | --- | --- | --- | --- | --- | --- | 
| mq.m5.large | 2 | 8 | 0,75/10.0 | Produksi | EBS | 200 | 
| mq.m5.xlarge | 4 | 16 | 1.25/10.0 | Produksi | EBS | 200 | 
| mq.m5.2xlarge | 8 | 32 | 2.5/10.0 | Produksi | EBS | 200 | 
| mq.m5.4xlarge | 16 | 64 | 5.0/10.0 | Produksi | EBS | 200 | 

# Amazon MQ untuk pedoman ukuran RabbitMQ
<a name="rabbitmq-sizing-guidelines"></a>

 Anda dapat memilih jenis instans broker yang paling mendukung aplikasi Anda. Saat memilih jenis instans, pertimbangkan faktor-faktor yang akan memengaruhi kinerja broker: 
+ jumlah klien dan antrian
+ volume pesan yang dikirim
+ pesan disimpan dalam memori
+ pesan berlebihan

 Jenis instans broker `m7g.medium` yang lebih kecil direkomendasikan hanya untuk menguji kinerja aplikasi. Kami merekomendasikan jenis instans broker yang lebih besar `m7g.large` dan di atas atau tingkat produksi klien dan antrian, throughput tinggi, pesan dalam memori, dan pesan yang berlebihan. 

**penting**  
Anda tidak dapat menurunkan versi broker dari tipe `mq.m5` atau `mq.m7g` instans ke tipe `mq.t3.micro` instans.

 Penting untuk menguji broker Anda untuk menentukan jenis dan ukuran instans yang sesuai untuk persyaratan pesan beban kerja Anda. 

 Selalu gunakan batas sumber daya default pada broker RabbitMQ 4 untuk menentukan ukuran instans yang sesuai untuk aplikasi Anda sesuai dengan praktik terbaik Amazon MQ. Batas sumber daya default ini didasarkan pada tipe tipe `m7g` instans dan antrian kuorum. 
+ [Batas sumber daya default untuk penerapan instans tunggal m7g](rabbitmq-resource-limits-configuration.md#default-values-single-instance)
+ [Batas sumber daya default untuk penerapan klaster m7g](rabbitmq-resource-limits-configuration.md#default-values-cluster-brokers)

 Anda dapat meningkatkan nilai batas apa pun hingga nilai maksimum seperti yang ditentukan oleh jenis instans dan mode penerapan. Namun, kami sangat menyarankan Anda menguji kinerja broker dengan nilai yang meningkat sebelum digunakan dalam produksi. 
+ [Batas sumber daya maksimum untuk penerapan instans tunggal m7g](rabbitmq-resource-hard-limit.md#sizing-guidelines-m7g-single-instance)
+ [Batas sumber daya maksimum untuk penerapan klaster m7g](rabbitmq-resource-hard-limit.md#sizing-guidelines-m7g-cluster)
+ [Batas sumber daya maksimum untuk penerapan instans tunggal m5](rabbitmq-resource-hard-limit.md#sizing-guidelines-single-instance)
+ [Batas sumber daya maksimum untuk penerapan cluster m5](sizing-guidelines-cluster.md)
+ [Pesan kesalahan](rabbitmq-resource-hard-limit.md#sizing-guidelines-limits-error-messages)

**catatan**  
 Broker RabbitMQ 3.13 tidak datang dengan batas sumber daya default, tetapi kami sarankan Anda menggunakan default yang disarankan. 

# Batas sumber daya default
<a name="rabbitmq-resource-limits-configuration"></a>

Amazon MQ untuk RabbitMQ mendukung konfigurasi batas sumber daya broker dari RabbitMQ 4 dan seterusnya. Saat Anda membuat broker, Amazon MQ secara otomatis menerapkan nilai default ke batas sumber daya ini. Default ini bertindak sebagai pagar pembatas untuk melindungi ketersediaan broker Anda sambil mengakomodasi pola penggunaan pelanggan umum. Anda dapat menyesuaikan perilaku broker Anda dengan mengubah nilai konfigurasi batas agar lebih sesuai dengan persyaratan beban kerja spesifik Anda.

Sebelum melakukan perubahan, harap dicatat:

**penting**  
Perubahan konfigurasi dapat memengaruhi kinerja dan ketersediaan broker
Pahami dampaknya sebelum mengubah opsi konfigurasi default
Uji perubahan konfigurasi di lingkungan non-produksi terlebih dahulu
Pantau kesehatan broker setelah menerapkan perubahan

**penting**  
Nilai default dan rentang yang didukung untuk konfigurasi ini bervariasi menurut versi RabbitMQ, tipe instans, dan mode penerapan broker.

**penting**  
 *Catatan: Mengaitkan atau membuat broker dengan nilai konfigurasi di luar rentang yang didukung akan menghasilkan respons kesalahan.* 

Untuk mempelajari cara menyesuaikan batas sumber daya default ini untuk broker Anda, lihat[Konfigurasi Batas Sumber Daya](configure-resource-limits.md).

Batas sumber daya default yang diterapkan untuk broker RabbitMQ 4.2 adalah
+ [Batas sumber daya default untuk penerapan instans tunggal m7g](#default-values-single-instance)
+ [Batas sumber daya default untuk penerapan klaster m7g](#default-values-cluster-brokers)

## Batas sumber daya default
<a name="rabbitmq-default-resource-limit"></a>

**penting**  
Amazon MQ untuk broker RabbitMQ 3, default dikonfigurasi dengan batas sumber daya maksimum dan Amazon MQ tidak memberikan kemampuan untuk mengganti konfigurasi batas sumber daya.

### Nilai default untuk broker instans tunggal
<a name="default-values-single-instance"></a>


| Tipe instans | Koneksi per Node | Saluran per Node | Konsumen per saluran | Antrean | vhost | Sekop | Pertukaran | Ukuran pesan dalam Bytes | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| mq.m7g.medium | 100 | 500 | 10 | 500 | 10 | 30 | 500 | 524288 | 
| mq.m7g.large | 1.500 | 4,500 | 10 | 1.000 | 50 | 50 | 1.000 | 524288 | 
| mq.m7g.xlarge | 3.000 | 9.000 | 10 | 2.000 | 100 | 100 | 2.000 | 524288 | 
| mq.m7g.2xlarge | 6.000 | 18.000 | 10 | 4.000 | 150 | 200 | 4.000 | 524288 | 
| mq.m7g.4xlarge | 12.000 | 36.000 | 10 | 8.000 | 200 | 400 | 8.000 | 524288 | 
| mq.m7g.8xlarge | 24.000 | 72.000 | 10 | 16.000 | 250 | 800 | 16.000 | 524288 | 
| mq.m7g.12xlarge | 36.000 | 108.000 | 10 | 24.000 | 300 | 1.200 | 24.000 | 524288 | 
| mq.m7g.16xlarge | 48.000 | 144.000 | 10 | 32.000 | 350 | 1.600 | 32.000 | 524288 | 

### Nilai default untuk broker klaster
<a name="default-values-cluster-brokers"></a>


| Tipe instans | Koneksi per Node | Saluran per Node | Konsumen per saluran | Antrean | vhost | Sekop | Pertukaran | Ukuran pesan dalam Bytes | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| mq.m7g.medium | 100 | 300 | 10 | 100 | 10 | 10 | 100 | 524288 | 
| mq.m7g.large | 500 | 1500 | 10 | 1.000 | 50 | 30 | 1.000 | 524288 | 
| mq.m7g.xlarge | 1000 | 3000 | 10 | 2.000 | 100 | 60 | 2.000 | 524288 | 
| mq.m7g.2xlarge | 2000 | 6000 | 10 | 4.000 | 150 | 120 | 4.000 | 524288 | 
| mq.m7g.4xlarge | 4000 | 12.000 | 10 | 8.000 | 200 | 240 | 8.000 | 524288 | 
| mq.m7g.8xlarge | 8000 | 24.000 | 10 | 16.000 | 250 | 480 | 16.000 | 524288 | 
| mq.m7g.12xlarge | 12000 | 36.000 | 10 | 24.000 | 300 | 720 | 24000 | 524288 | 
| mq.m7g.16xlarge | 16.000 | 48.000 | 10 | 32.000 | 350 | 960 | 32.000 | 524288 | 

# Amazon MQ untuk batas sumber daya maksimum RabbitMQ
<a name="rabbitmq-resource-hard-limit"></a>

Anda dapat mengonfigurasi batas sumber daya hingga nilai maksimum yang ditunjukkan dalam tabel berikut. Untuk mempelajari cara memperbarui batas sumber daya untuk broker Anda, lihat[Konfigurasi Batas Sumber Daya](configure-resource-limits.md).

## Pedoman ukuran untuk m7g dengan antrian kuorum untuk penerapan instans tunggal
<a name="sizing-guidelines-m7g-single-instance"></a>

Tabel berikut menunjukkan nilai batas **maksimum** untuk setiap jenis instans untuk broker instans tunggal.


| Tipe Instans | Koneksi | Saluran | Konsumen per saluran | Antrean | Vhost | Sekop | Pertukaran | Ukuran Pesan dalam Byte | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| mq.m7g.medium | 300 | 900 | 1.000 | 2.500 | 10 | 150 | 12500 | 134217728 | 
| mq.m7g.large | 5.000 | 15.000 | 1.000 | 20.000 | 1500 | 250 | 100.000 | 134217728 | 
| mq.m7g.xlarge | 10.000 | 30.000 | 1.000 | 30.000 | 1.500 | 500 | 150.000 | 134217728 | 
| mq.m7g.2xlarge | 20.000 | 60.000 | 1.000 | 40.000 | 1.500 | 1.000 | 200.000 | 134217728 | 
| mq.m7g.4xlarge | 40.000 | 120.000 | 1.000 | 60.000 | 1.500 | 2000 | 300.000 | 134217728 | 
| mq.m7g.8xlarge | 80.000 | 240.000 | 1.000 | 80.000 | 1.500 | 4000 | 400.000 | 134217728 | 
| mq.m7g.12xlarge | 120.000 | 360.000 | 1.000 | 100.000 | 1.500 | 6.000 | 500.000 | 134217728 | 
| mq.m7g.16xlarge | 160.000 | 480.000 | 1.000 | 120.000 | 1.500 | 8.000 | 600.000 | 134217728 | 

## Pedoman ukuran untuk m7g dengan antrian kuorum untuk penerapan klaster
<a name="sizing-guidelines-m7g-cluster"></a>

Tabel berikut menunjukkan nilai batas **maksimum** untuk setiap jenis instans untuk broker cluster.


| Tipe Instans | Koneksi per Node | Saluran per Node | Konsumen per saluran | Antrean | Vhost | Sekop | Pertukaran | Ukuran Pesan dalam Byte | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| mq.m7g.medium | 300 | 900 | 1.000 | 500 | 10 | 50 | 500 | 134217728 | 
| mq.m7g.large | 5.000 | 15.000 | 1.000 | 10.000 | 1.500 | 150 | 50.000 | 134217728 | 
| mq.m7g.xlarge | 10.000 | 30.000 | 1.000 | 15.000 | 1.500 | 300 | 75.000 | 134217728 | 
| mq.m7g.2xlarge | 20.000 | 60.000 | 1.000 | 20.000 | 1.500 | 600 | 100.000 | 134217728 | 
| mq.m7g.4xlarge | 40.000 | 120.000 | 1.000 | 30.000 | 1.500 | 1200 | 150.000 | 134217728 | 
| mq.m7g.8xlarge | 80.000 | 240.000 | 1.000 | 40.000 | 1.500 | 2,400 | 200.000 | 134217728 | 
| mq.m7g.12xlarge | 120.000 | 360.000 | 1.000 | 50.000 | 1.500 | 3.600 | 250.000 | 134217728 | 
| mq.m7g.16xlarge | 160.000 | 480.000 | 1.000 | 60.000 | 1.500 | 4,800 | 300.000 | 134217728 | 

## Batas sumber daya maksimum untuk penerapan instans tunggal M5
<a name="sizing-guidelines-single-instance"></a>

Tabel berikut menunjukkan nilai batas **maksimum** untuk setiap jenis instans untuk broker instans tunggal.


| Tipe Instans | Koneksi | Saluran | Konsumen per saluran | Antrean | Vhost | Sekop | 
| --- | --- | --- | --- | --- | --- | --- | 
| m5.large | 5.000 | 15.000 | 1.000 | 30.000 | 1500 | 250 | 
| m5.xlarge | 10.000 | 30.000 | 1.000 | 60.000 | 1500 | 500 | 
| m5.2xlarge | 20.000 | 60.000 | 1.000 | 120.000 | 1500 | 1.000 | 
| m5.4xlarge | 40.000 | 120.000 | 1000 | 240.000 | 1.000 | 2.000 | 

# Batas sumber daya maksimum untuk penerapan cluster m5
<a name="sizing-guidelines-cluster"></a>

Tabel berikut menunjukkan nilai batas **maksimum** untuk setiap jenis instans untuk broker cluster.


| Tipe Instans | Antrean | Konsumen per saluran | Sekop | 
| --- | --- | --- | --- | 
| m5.large | 10.000 | 1.000 | 150 | 
| m5.xlarge | 15.000 | 1.000 | 300 | 
| m5.2xlarge | 20.000 | 1.000 | 600 | 
| m5.4xlarge | 30.000 | 1.000 | 1200 | 

Batas koneksi dan saluran berikut diterapkan per node:


| Tipe Instans | Koneksi | Saluran | 
| --- | --- | --- | 
| m5.large | 5000 | 15.000 | 
| m5.xlarge | 10.000 | 30.000 | 
| m5.2xlarge | 20.000 | 60.000 | 
| m5.4xlarge | 40.000 | 120.000 | 

Nilai batas yang tepat untuk broker cluster mungkin lebih rendah dari nilai yang ditunjukkan tergantung pada jumlah node yang tersedia dan bagaimana RabbitMQ mendistribusikan sumber daya di antara node yang tersedia. Jika Anda melebihi nilai batas, Anda dapat membuat koneksi baru ke node yang berbeda dan mencoba lagi, atau Anda dapat meningkatkan ukuran instance untuk meningkatkan batas maksimum

## Pesan kesalahan
<a name="sizing-guidelines-limits-error-messages"></a>

 Pesan galat berikut dikembalikan ketika batas terlampaui. Semua nilai didasarkan pada batas instance **m7.large** tunggal. 

**catatan**  
Kode kesalahan untuk pesan berikut dapat berubah berdasarkan pustaka klien yang Anda gunakan.

**Koneksi**

`ConnectionClosedByBroker 500 "NOT_ALLOWED - connection refused: node connection limit (5000) is reached"`

**Kanal**

`ConnectionClosedByBroker 1500 "NOT_ALLOWED - number of channels opened on node 'rabbit@ip-10-0-23-173.us-west-2.compute.internal' has reached the maximum allowed limit of (15,000)"`

**Konsumen**

`ConnectionClosedByBroker: (530, 'NOT_ALLOWED - reached maximum (1,000) of consumers per channel')`

**Ukuran pesan maksimal**

` (406, 'PRECONDITION_FAILED - message size 524289 is larger than configured max size 524288') `

**Pertukaran**

` (406, "PRECONDITION_FAILED - cannot declare exchange 'limit_test_3' in vhost '/': exchange limit of 10 is reached") `

**catatan**  
Pesan galat berikut menggunakan format HTTP Management API.

**Antrian**

`{"error":"bad_request","reason":"cannot declare queue 'my_queue': queue limit in cluster (10,000) is reached"}]`

**Sekop**

`{"error":"bad_request","reason":"Validation failed\n\ncomponent shovel is limited to 150 per node\n"}`

**Vhost**

`{"error":"bad_request","reason":"cannot create vhost 'my_vhost': vhost limit of 1500 is reached"}`

# Broker default Amazon MQ for RabbitMQ
<a name="rabbitmq-defaults"></a>

Ketika Anda membuat broker Amazon MQ for RabbitMQ, Amazon MQ menerapkan serangkaian kebijakan broker default dan batas vhost untuk mengoptimalkan performa broker. Amazon MQ menerapkan batas vhost hanya untuk vhost default (`/`). Amazon MQ tidak akan menerapkan kebijakan default ke vhost yang baru dibuat. Kami merekomendasikan Anda menyimpan default ini untuk semua broker baru dan yang sudah ada. Namun, Anda dapat mengubah, menimpa, atau menghapus default ini kapan saja.

Amazon MQ menciptakan kebijakan broker dan batas vhost yang berbeda untuk Amazon MQ untuk RabbitMQ 3 dan RabbitMQ 4. Perbedaannya akan dibahas secara rinci dalam subbagian berikut.

Amazon MQ menciptakan kebijakan dan batas berdasarkan tipe instans dan mode deployment broker yang Anda pilih saat membuat broker. Kebijakan default diberi nama sesuai dengan mode deployment, seperti berikut:

**Amazon MQ untuk RabbitMQ 3:**
+ **Instans tunggal** – `AWS-DEFAULT-POLICY-SINGLE-INSTANCE`
+ **Penerapan cluster — &&** `AWS-DEFAULT-POLICY-CLUSTER-MULTI-AZ` `AWS-DEFAULT-QUORUM-QUEUES-POLICY-CLUSTER-MULTI-AZ`

**Amazon MQ untuk RabbitMQ 4:**
+ **Instans tunggal** – `AWS-DEFAULT-POLICY-SINGLE-INSTANCE`
+ **Penerapan cluster — &&** `AWS-DEFAULT-POLICY-CLUSTER` `AWS-DEFAULT-QUORUM-QUEUES-POLICY-CLUSTER-MULTI-AZ`

Untuk [broker instans tunggal](rabbitmq-broker-architecture.md#rabbitmq-broker-architecture-single-instance), Amazon MQ menetapkan nilai prioritas kebijakan ke `0`. Untuk menimpa nilai prioritas default, Anda dapat membuat kebijakan kustom Anda sendiri dengan nilai prioritas yang lebih tinggi. Untuk [deployment klaster](rabbitmq-broker-architecture.md#rabbitmq-broker-architecture-cluster), Amazon MQ menetapkan nilai prioritas ke `1` untuk broker default. Untuk membuat kebijakan kustom Anda sendiri bagi klaster, tetapkan nilai prioritas yang lebih besar dari `1`.

**catatan**  
Dalam deployment klaster, kebijakan broker `ha-mode` dan `ha-sync-mode` diperlukan untuk pencerminan klasik dan ketersediaan tinggi (HA). Pengaturan ini hanya berlaku untuk Amazon MQ untuk RabbitMQ 3 dan tidak dikonfigurasi untuk RabbitMQ 4.  
Jika Anda menghapus kebijakan default `AWS-DEFAULT-POLICY-CLUSTER-MULTI-AZ`, Amazon MQ menggunakan kebijakan `ha-all-AWS-OWNED-DO-NOT-DELETE` dengan nilai prioritas `0`. Hal ini memastikan bahwa kebijakan `ha-mode` dan `ha-sync-mode` yang diperlukan masih berlaku. Jika Anda membuat kebijakan kustom Anda sendiri, Amazon MQ secara otomatis menambahkan `ha-mode` dan `ha-sync-mode` ke definisi kebijakan Anda.

**Topics**
+ [Deskripsi kebijakan dan batas](#rabbitmq-defaults-descriptions)
+ [Nilai default yang direkomendasikan](#rabbitmq-defaults-values)

## Deskripsi kebijakan dan batas
<a name="rabbitmq-defaults-descriptions"></a>

Daftar berikut menjelaskan kebijakan default dan batas yang diterapkan Amazon MQ untuk broker yang baru dibuat. Nilai untuk `max-length`, `max-queues`, dan `max-connections` beragam menurut tipe instans dan mode deployment broker Anda. Nilai tersebut tercantum pada bagian [Nilai default yang direkomendasikan](#rabbitmq-defaults-values).

**Pengaturan pada broker RabbitMQ 3 dan RabbitMQ 4**
+ **`queue-mode: lazy`** (kebijakan) - Memungkinkan antrean malas. Secara default, antrean menyimpan cache dalam memori dari pesan, memungkinkan broker mengirimkan pesan kepada konsumen secepat mungkin. Hal ini dapat menyebabkan broker kehabisan memori dan memicu alarm memori tinggi. Antrean malas mencoba untuk memindahkan pesan ke disk sedini mungkin. Ini berarti bahwa lebih sedikit pesan disimpan dalam memori dalam kondisi operasi normal. Menggunakan antrean malas, Amazon MQ for RabbitMQ dapat mendukung beban olahpesan yang jauh lebih besar dan antrean yang lebih panjang. Perhatikan bahwa untuk kasus penggunaan tertentu, broker dengan antrean malas mungkin memiliki performa yang sedikit lebih lambat. Ini karena pesan dipindahkan dari disk ke broker, berlawanan dengan mengirim pesan dari cache dalam memori.
**Mode deployment**  
Instans tunggal, klaster
+ **`max-length: number-of-messages`** (klaster) - Menetapkan batas jumlah pesan dalam antrean. Pada deployment klaster, batas mencegah jeda sinkronisasi antrean dalam kasus seperti boot ulang broker, atau mengikuti jendela pemeliharaan.
**Mode deployment**  
Klaster
+ **`overflow: reject-publish`** (kebijakan) — Menegakkan kebijakan `max-length` ke antrean untuk menolak pesan baru setelah jumlah pesan dalam antrean mencapai nilai `max-length`. Untuk memastikan bahwa pesan tidak hilang jika antrian dalam keadaan berlebih, aplikasi klien yang memublikasikan pesan ke broker harus menerapkan [konfirmasi penerbit](best-practices-message-reliability.md#configure-confirmation-acknowledgement). Untuk informasi tentang mengimplementasikan konfirmasi penerbit, lihat [konfirmasi Penerbit](https://www.rabbitmq.com/confirms.html#publisher-confirms) di situs web RabbitMQ.
**Mode deployment**  
Kluster

**Pengaturan khusus untuk RabbitMQ 3**
+ **`max-queues: number-of-queues-per-vhost`** (batas vhost) - Mengatur batas untuk jumlah antrean dalam broker. Mirip dengan definisi kebijakan `max-length`, membatasi jumlah antrean dalam deployment klaster mencegah jeda sinkronisasi antrean setelah boot ulang broker atau jendela pemeliharaan. Membatasi antrean juga mencegah jumlah penggunaan CPU yang berlebihan untuk mempertahankan antrean.
**Mode deployment**  
Instans tunggal, klaster
+ **`max-connections: number-of-connections-per-vhost`** (batas vhost) - Mengatur batas untuk jumlah koneksi klien ke broker. Membatasi jumlah koneksi sesuai dengan nilai yang disarankan mencegah penggunaan memori broker yang berlebihan, yang dapat mengakibatkan broker meningkatkan alarm memori tinggi dan menghentikan operasi.
**Mode deployment**  
Instans tunggal, klaster

## Nilai default yang direkomendasikan
<a name="rabbitmq-defaults-values"></a>

**penting**  
 `max-queues`dan hanya `max-connections` diterapkan ke Amazon MQ untuk RabbitMQ 3. 

**catatan**  
Batas default `max-length` dan `max-queue` diuji dan dievaluasi berdasarkan ukuran pesan rata-rata sebesar 5 kB. Jika ukuran pesan jauh lebih besar dari 5 kB, Anda harus menyesuaikan dan mengurangi batas `max-length` dan `max-queue`.

Tabel berikut mencantumkan nilai batas default untuk broker yang baru dibuat. Amazon MQ menerapkan nilai tersebut sesuai dengan tipe instans broker dan mode deployment.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/amazon-mq/latest/developer-guide/rabbitmq-defaults.html)


| Tipe instans | Mode deployment | `max-length` | `max-queues` | `max-connections` | 
| --- | --- | --- | --- | --- | 
| t3.micro | Instans tunggal | N/A | 500 | 500 | 
| m5.large | Instans tunggal | N/A | 20.000 | 4.000 | 
| m5.large | Klaster | 8.000.000 | 10.000 | 15.000 | 
| m5.xlarge | Instans tunggal | N/A | 30.000 | 8.000 | 
| m5.xlarge | Klaster | 9.000.000 | 10.000 | 20.000 | 
| m5.2xlarge | Instans tunggal | N/A | 60.000 | 15.000 | 
| m5.2xlarge | Klaster | 10.000.000 | 10.000 | 40.000 | 
| m5.4xlarge | Instans tunggal | N/A | 150.000 | 30.000 | 
| m5.4xlarge | Klaster | 12.000.000 | 10.000 | 100.000 | 

# Mengkonfigurasi broker RabbitMQ
<a name="rabbitmq-broker-configuration-parameters"></a>

Konfigurasi berisi semua pengaturan untuk broker RabbitMQ Anda dalam format Sotong. Anda dapat membuat konfigurasi sebelum membuat broker. Kemudian Anda dapat menerapkan konfigurasi ke satu atau lebih broker.

## Atribut
<a name="configuration-attributes"></a>

Konfigurasi broker memiliki beberapa atribut, misalnya:
+ Nama (MyConfiguration)
+ Sebuah ID (c-1234a5b6-78cd-901e-2fgh-3i45j6k178l9)
+ Nama Sumber Daya Amazon (ARN) (arn:aws:mq:us-east- 2:123456789012:configuration:c-1234a5b678cd-901e-2fgh-3i45j6k178l9)

Untuk daftar lengkap atribut konfigurasi, lihat di Referensi REST API Amazon MQ:
+ [ID Operasi REST: Konfigurasi](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configuration.html)
+ [ID Operasi REST: Konfigurasi](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configurations.html)

Untuk daftar lengkap atribut revisi konfigurasi, lihat hal berikut:
+ [ID Operasi REST: Revisi Konfigurasi](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configuration-revision.html)
+ [ID Operasi REST: Revisi Konfigurasi](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/rest-api-configuration-revisions.html)

Topik
+ [Membuat dan menerapkan konfigurasi broker RabbitMQ](rabbitmq-creating-applying-configurations.md)
+ [Edit Amazon MQ untuk Revisi Konfigurasi RabbitMQ](edit-current-rabbitmq-configuration-console.md)
+ [Nilai yang dapat dikonfigurasi untuk RabbitMQ di Amazon MQ](configurable-values.md)
+ [Dukungan ARN dalam konfigurasi RabbitMQ](arn-support-rabbitmq-configuration.md)

# Membuat dan menerapkan konfigurasi broker RabbitMQ
<a name="rabbitmq-creating-applying-configurations"></a>

*Konfigurasi* berisi semua pengaturan untuk broker RabbitMQ Anda dalam format Sotong. Anda dapat membuat konfigurasi sebelum membuat broker. Anda kemudian dapat menerapkan konfigurasi ke satu atau lebih broker

Contoh berikut menunjukkan bagaimana Anda dapat membuat dan menerapkan konfigurasi broker RabbitMQ menggunakan. Konsol Manajemen AWS

**penting**  
Anda hanya dapat **menghapus** konfigurasi menggunakan `DeleteConfiguration` API. Untuk informasi selengkapnya, lihat [Konfigurasi](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/configurations-configuration-id.html) di Referensi *API Amazon MQ*.

## Buat Konfigurasi Baru
<a name="creating-rabbitmq-configuration-from-scratch-console"></a>

 Untuk menerapkan konfigurasi ke broker Anda, Anda harus terlebih dahulu membuat konfigurasi. 

1. Masuk ke [konsol Amazon MQ](https://console.aws.amazon.com/amazon-mq/).

1. Di sebelah kiri, perluas panel navigasi dan pilih **Konfigurasi**.  
![\[Amazon MQ navigation panel showing Brokers and Configurations options.\]](http://docs.aws.amazon.com/id_id/amazon-mq/latest/developer-guide/images/amazon-mq-tutorials-create-configuration.png)

1. Di halaman **Konfigurasi**, pilih **Buat konfigurasi**.

1. Di halaman **Buat konfigurasi**, pada bagian **Detail**, ketik **Nama konfigurasi** (Misalnya, `MyConfiguration`) dan pilih versi **Mesin broker**.

   Untuk mempelajari lebih lanjut tentang versi mesin RabbitMQ yang didukung oleh Amazon MQ untuk RabbitMQ, lihat. [Mengelola Amazon MQ untuk versi mesin RabbitMQ](rabbitmq-version-management.md)

1. Pilih **Buat konfigurasi**.

## Buat Revisi Konfigurasi Baru
<a name="creating-new-rabbitmq-configuration-revision-console"></a>

 Setelah Anda membuat konfigurasi, Anda harus mengedit konfigurasi menggunakan revisi konfigurasi. 

1. Dari daftar konfigurasi, pilih ***MyConfiguration***.
**catatan**  
Revisi konfigurasi pertama selalu dibuat untuk Anda ketika Amazon MQ membuat konfigurasi.

   Pada ***MyConfiguration***halaman, jenis dan versi mesin broker yang digunakan revisi konfigurasi baru Anda (misalnya, **RabbitMQ 3.xx.xx**) ditampilkan.

1. Pada tab **Detail konfigurasi**, nomor revisi konfigurasi, deskripsi, dan konfigurasi broker dalam format Cuttlefish ditampilkan.
**catatan**  
Mengedit konfigurasi saat ini membuat revisi konfigurasi baru.

1. Pilih **Edit konfigurasi** dan buat perubahan pada konfigurasi Cuttlefish.

1. Pilih **Simpan**.

   Kotak dialog **Simpan revisi** akan ditampilkan.

1. (Opsional) Tipe `A description of the changes in this revision`.

1. Pilih **Simpan**.

   Revisi konfigurasi baru akan disimpan.
**penting**  
Pembuatan perubahan pada konfigurasi *tidak* akan segera menerapkan perubahan ke broker. Untuk menerapkan perubahan Anda, Anda harus menunggu jendela pemeliharaan berikutnya atau [reboot broker](amazon-mq-rebooting-broker.md).  
Saat ini, Anda tidak dapat menghapus konfigurasi.

## Terapkan Revisi Konfigurasi ke Broker Anda
<a name="apply-rabbitmq-configuration-revision-creating-console"></a>

 Setelah membuat revisi konfigurasi, Anda dapat menerapkan revisi konfigurasi ke broker Anda. 

1. Di sebelah kiri, perluas panel navigasi dan pilih **Broker**.  
![\[Amazon MQ navigation panel showing Brokers and Configurations options.\]](http://docs.aws.amazon.com/id_id/amazon-mq/latest/developer-guide/images/amazon-mq-tutorials-apply-configuration.png)

1. Dari daftar broker, pilih broker Anda (misalnya, **MyBroker**) dan kemudian pilih **Edit**.

1. Pada *MyBroker* halaman **Edit**, di bagian **Konfigurasi**, pilih **Konfigurasi** dan **Revisi** dan kemudian pilih **Jadwal Modifikasi**.

1. Di bagian **Jadwalkan perubahan broker**, pilih apakah akan menerapkan perubahan **Selama jendela pemeliharaan terjadwal berikutnya** atau **Segera**.
**penting**  
Pialang instans tunggal sedang offline saat di-boot ulang. Untuk broker cluster, hanya satu node yang turun pada satu waktu sementara broker melakukan reboot.

1. Pilih **Terapkan**.

   Revisi konfigurasi Anda diterapkan ke broker pada waktu yang ditentukan.

# Edit Amazon MQ untuk Revisi Konfigurasi RabbitMQ
<a name="edit-current-rabbitmq-configuration-console"></a>

 Petunjuk berikut menjelaskan cara mengedit revisi konfigurasi untuk broker Anda. 

1. Masuk ke [konsol Amazon MQ](https://console.aws.amazon.com/amazon-mq/).

1. Dari daftar broker, pilih broker Anda (misalnya, **MyBroker**) dan kemudian pilih **Edit**.

1. Pada ***MyBroker***halaman, pilih **Edit**.

1. Pada *MyBroker* halaman **Edit**, di bagian **Konfigurasi**, pilih **Konfigurasi** dan **Revisi** dan kemudian pilih **Edit**.
**catatan**  
Kecuali Anda memilih konfigurasi ketika membuat broker, revisi konfigurasi pertama selalu dibuat untuk Anda ketika Amazon MQ membuat broker.

   Pada ***MyBroker***halaman, jenis dan versi mesin broker yang digunakan konfigurasi (misalnya, **RabbitMQ 3.xx.xx**) ditampilkan.

1. Pada tab **Detail konfigurasi**, nomor revisi konfigurasi, deskripsi, dan konfigurasi broker dalam format Cuttlefish ditampilkan.
**catatan**  
Mengedit konfigurasi saat ini membuat revisi konfigurasi baru.

1. Pilih **Edit konfigurasi** dan buat perubahan pada konfigurasi Cuttlefish.

1. Pilih **Simpan**.

   Kotak dialog **Simpan revisi** akan ditampilkan.

1. (Opsional) Tipe `A description of the changes in this revision`.

1. Pilih **Simpan**.

   Revisi konfigurasi baru akan disimpan.
**penting**  
Pembuatan perubahan pada konfigurasi *tidak* akan segera menerapkan perubahan ke broker. Untuk menerapkan perubahan Anda, Anda harus menunggu jendela pemeliharaan berikutnya atau [reboot broker](amazon-mq-rebooting-broker.md).  
Saat ini, Anda tidak dapat menghapus konfigurasi.

# Nilai yang dapat dikonfigurasi
<a name="configurable-values"></a>

Anda dapat mengatur nilai opsi konfigurasi broker berikut dengan memodifikasi file konfigurasi broker di Konsol Manajemen AWS.

Selain nilai yang dijelaskan dalam tabel berikut, Amazon MQ mendukung opsi konfigurasi broker tambahan yang terkait dengan otentikasi dan otorisasi serta batas sumber daya. Untuk informasi selengkapnya tentang opsi konfigurasi ini, lihat
+ [OAuth 2.0 konfigurasi](configure-oauth2.md)
+ [Konfigurasi LDAP](configure-ldap.md)
+ [Konfigurasi HTTP](configure-http.md)
+ [Konfigurasi SSL](configure-ssl.md)
+ [Konfigurasi mTLS](configure-mtls.md)
+ [Dukungan ARN](arn-support-rabbitmq-configuration.md)
+ [Batas sumber daya](rabbitmq-resource-limits-configuration.md)
+ [Konfigurasi SSL klien AMQP](rabbitmq-amqp-client-ssl-configuration.md)


| Konfigurasi | nilai default | Nilai yang Direkomendasikan | Nilai | Versi yang Berlaku | Deskripsi | 
| --- | --- | --- | --- | --- | --- | 
| consumer\$1timeout | 1800000 ms (30 menit) | 1800000 ms (30 menit) | 0 hingga 2.147.483.647 ms. Amazon MQ juga mendukung nilai 0, yang berarti “tak terbatas”. | Semua versi | Batas waktu pada pengakuan pengiriman konsumen untuk mendeteksi kapan konsumen tidak melakukan pengiriman. | 
| detak jantung | 60 detik | 60 detik | 60 hingga 3600 detik | Semua versi | Mendefinisikan waktu sebelum koneksi dianggap tidak tersedia oleh RabbitMQ. | 
| management.restrictions.operator\$1policy\$1changes.disabled | true | true | benar, salah | Semua versi | Menonaktifkan membuat perubahan pada kebijakan operator. Jika Anda membuat perubahan ini, Anda sangat dianjurkan untuk memasukkan properti HA dalam kebijakan operator Anda sendiri. | 
| quorum\$1queue.property\$1equivalence.relaxed\$1checks\$1on\$1redeclaration | true | true | benar, salah | Semua versi | Saat disetel ke TRUE, aplikasi Anda menghindari pengecualian channel saat mendeklarasikan ulang antrian kuorum. | 
| secure.management.http.headers.enabled | true | true | benar, salah | Semua versi | Mengaktifkan header keamanan HTTP yang tidak dapat dimodifikasi. | 

## Mengkonfigurasi pengakuan pengiriman konsumen
<a name="configuring-consumer-delivery"></a>

Anda dapat mengonfigurasi consumer\$1timeout untuk mendeteksi saat konsumen tidak melakukan pengiriman. Jika konsumen tidak mengirimkan pengakuan dalam nilai batas waktu, saluran akan ditutup. Misalnya, jika Anda menggunakan nilai default 1800000 milidetik, jika konsumen tidak mengirim pemberitahuan pengiriman dalam 1800000 milidetik, saluran akan ditutup. Amazon MQ juga mendukung nilai 0, yang berarti “tak terbatas”.

## Mengkonfigurasi detak jantung
<a name="configuring-heartbeat"></a>

Anda dapat mengonfigurasi batas waktu detak jantung untuk mengetahui kapan koneksi terganggu atau gagal. Nilai detak jantung menentukan batas waktu sebelum koneksi dianggap turun.

## Mengkonfigurasi kebijakan operator
<a name="configuring-operator-policies"></a>

Kebijakan operator default pada setiap host virtual memiliki properti HA yang direkomendasikan berikut:

```
{
"name": "default_operator_policy_AWS_managed",
"pattern": ".*",
"apply-to": "all",
"priority": 0,
"definition": {
"ha-mode": "all",
"ha-sync-mode": "automatic"
}
}
```

Perubahan kebijakan operator melalui Konsol Manajemen AWS atau Management API tidak tersedia secara default. Anda dapat mengaktifkan perubahan dengan menambahkan baris berikut ke konfigurasi broker:

```
management.restrictions.operator_policy_changes.disabled=false
```

Jika Anda membuat perubahan ini, Anda sangat dianjurkan untuk memasukkan properti HA dalam kebijakan operator Anda sendiri.

## Mengkonfigurasi pemeriksaan santai pada deklarasi antrian
<a name="configuring-relaxed-checks"></a>

Jika Anda telah memigrasikan antrian klasik ke antrian kuorum tetapi tidak memperbarui kode klien, Anda dapat menghindari pengecualian saluran saat mendeklarasikan ulang antrian kuorum dengan mengonfigurasi quorum\$1queue.property\$1equivalence.relaxed\$1checks\$1on\$1redeclaration disetel ke true.

## Mengkonfigurasi header keamanan HTTP
<a name="configuring-http-security"></a>

Konfigurasi secure.management.http.headers.enabled memungkinkan header keamanan HTTP berikut:
+ [X-Content-Type-Options: nosniff](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options): mencegah browser melakukan sniffing konten, algoritma yang digunakan untuk menyimpulkan format file situs web.
+ [X-Frame-Options: DENY](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options): mencegah orang lain menyematkan plugin manajemen ke dalam bingkai di situs web mereka sendiri untuk menipu orang lain
+ [Strict-Transport-Security: max-age=47304000; includeSubDomains](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security): memaksa browser untuk menggunakan HTTPS saat membuat koneksi berikutnya ke situs web dan subdomainnya untuk jangka waktu yang lama (1,5 tahun).

Amazon MQ untuk broker RabbitMQ yang dibuat pada versi 3.10 dan di atasnya akan memiliki secure.management.http.headers.enabled disetel ke true secara default. Anda dapat mengaktifkan header keamanan HTTP ini dengan menyetel secure.management.http.headers.enabled ke true. Jika Anda ingin memilih keluar dari header keamanan HTTP ini, setel secure.management.http.headers.enabled ke false.

# Mengkonfigurasi otentikasi dan otorisasi OAuth 2.0
<a name="configure-oauth2"></a>

Untuk informasi tentang opsi konfigurasi OAuth 2.0 dan menyiapkan otentikasi OAuth 2.0 untuk broker Anda, lihat [Konfigurasi OAuth 2.0 yang didukung dan Menggunakan otentikasi](oauth-for-amq-for-rabbitmq.md#oauth-tutorial-supported-configs) [dan otorisasi OAuth 2.0](oauth-tutorial.md).

# Mengkonfigurasi otentikasi dan otorisasi LDAP
<a name="configure-ldap"></a>

Untuk informasi tentang opsi konfigurasi LDAP dan menyiapkan otentikasi LDAP untuk broker Anda, lihat Konfigurasi [LDAP yang didukung](ldap-for-amq-for-rabbitmq.md#ldap-supported-configs) dan. [Menggunakan otentikasi dan otorisasi LDAP](rabbitmq-ldap-tutorial.md)

# Mengkonfigurasi otentikasi dan otorisasi HTTP
<a name="configure-http"></a>

Untuk informasi tentang nilai konfigurasi otentikasi HTTP dan menyiapkan otentikasi HTTP untuk broker Anda, lihat [otentikasi dan otorisasi HTTP dan](http-for-amq-for-rabbitmq.md). [Menggunakan otentikasi dan otorisasi HTTP](rabbitmq-http-tutorial.md)

**catatan**  
Plugin otentikasi HTTP hanya tersedia untuk Amazon MQ untuk RabbitMQ versi 4 ke atas.

# Mengkonfigurasi otentikasi sertifikat SSL
<a name="configure-ssl"></a>

Untuk informasi tentang nilai konfigurasi otentikasi sertifikat SSL dan menyiapkan otentikasi sertifikat SSL untuk broker Anda, lihat otentikasi sertifikat [SSL](ssl-for-amq-for-rabbitmq.md) dan. [Menggunakan otentikasi sertifikat SSL](rabbitmq-ssl-tutorial.md)

**catatan**  
Plugin otentikasi sertifikat SSL hanya tersedia untuk Amazon MQ untuk RabbitMQ versi 4 ke atas.

# Mengkonfigurasi mTL
<a name="configure-mtls"></a>

Amazon MQ untuk RabbitMQ mendukung TLS bersama (MTLS) untuk koneksi aman ke berbagai titik akhir dan layanan eksternal. mTLS menyediakan keamanan yang ditingkatkan dengan mengharuskan klien dan server untuk mengautentikasi menggunakan sertifikat.

**catatan**  
Penggunaan otoritas sertifikat swasta untuk mTLS hanya tersedia untuk Amazon MQ untuk RabbitMQ versi 4 ke atas.

**penting**  
Amazon MQ untuk RabbitMQ memberlakukan penggunaan AWS ARNs untuk sertifikat dan file kunci pribadi. Lihat [dukungan ARN dalam konfigurasi RabbitMQ](arn-support-rabbitmq-configuration.md) untuk detail selengkapnya.

**Topics**
+ [Titik akhir AMQP](#mtls-amqp-endpoint)
+ [Plugin manajemen RabbitMQ](#mtls-management-plugin)
+ [Plugin RabbitMQ 2.0 OAuth](#mtls-oauth2-plugin)
+ [Plugin otentikasi HTTP RabbitMQ](#mtls-http-plugin)
+ [Plugin RabbitMQ LDAP](#mtls-ldap-plugin)
+ [Koneksi klien AMQP](#mtls-amqp-client)

## Titik akhir AMQP
<a name="mtls-amqp-endpoint"></a>

Konfigurasikan mTL untuk koneksi klien ke titik akhir AMQP. Ini digunakan dengan otentikasi sertifikat SSL. Untuk konfigurasi yang didukung, lihat[Otentikasi sertifikat SSL](ssl-for-amq-for-rabbitmq.md).

## Plugin manajemen RabbitMQ
<a name="mtls-management-plugin"></a>

Konfigurasikan mTLS untuk koneksi ke antarmuka manajemen RabbitMQ.

**catatan**  
MTL yang ketat tidak didukung untuk API manajemen.

`aws.arns.management.ssl.cacertfile`  
File otoritas sertifikat untuk memvalidasi sertifikat klien yang terhubung ke antarmuka manajemen.

`management.ssl.verify`  
Mode verifikasi rekan. Nilai yang didukung:`verify_none`, `verify_peer`

`management.ssl.depth`  
Kedalaman rantai sertifikat maksimum untuk verifikasi.

`management.ssl.hostname_verification`  
Mode verifikasi nama host. Nilai yang didukung:`wildcard`, `none`

Nilai konfigurasi SSL berikut tidak didukung:

### Lihat daftar lengkap
<a name="management-ssl-options-list-content"></a>
+ `management.ssl.cert`
+ `management.ssl.client_renegotiation`
+ `management.ssl.dh`
+ `management.ssl.dhfile`
+ `management.ssl.fail_if_no_peer_cert`
+ `management.ssl.honor_cipher_order`
+ `management.ssl.honor_ecc_order`
+ `management.ssl.key.RSAPrivateKey`
+ `management.ssl.key.DSAPrivateKey`
+ `management.ssl.key.PrivateKeyInfo`
+ `management.ssl.log_alert`
+ `management.ssl.password`
+ `management.ssl.psk_identity`
+ `management.ssl.reuse_sessions`
+ `management.ssl.secure_renegotiate`
+ `management.ssl.versions.$version`
+ `management.ssl.sni`

## Plugin RabbitMQ 2.0 OAuth
<a name="mtls-oauth2-plugin"></a>

Konfigurasikan mTL untuk koneksi dari Amazon MQ ke penyedia identitas OAuth 2.0. Untuk konfigurasi yang didukung, lihat[OAuth 2.0 otentikasi dan otorisasi](oauth-for-amq-for-rabbitmq.md).

## Plugin otentikasi HTTP RabbitMQ
<a name="mtls-http-plugin"></a>

Konfigurasikan mTL untuk koneksi dari Amazon MQ ke server otentikasi HTTP. Untuk konfigurasi yang didukung, lihat[Otentikasi dan otorisasi HTTP](http-for-amq-for-rabbitmq.md).

## Plugin RabbitMQ LDAP
<a name="mtls-ldap-plugin"></a>

Konfigurasikan mTL untuk koneksi dari Amazon MQ ke server LDAP. Untuk konfigurasi yang didukung, lihat[Otentikasi dan otorisasi LDAP](ldap-for-amq-for-rabbitmq.md).

## Koneksi klien AMQP
<a name="mtls-amqp-client"></a>

Konfigurasikan verifikasi rekan TLS untuk koneksi klien AMQP yang digunakan oleh federasi dan sekop. Untuk informasi selengkapnya, lihat konfigurasi [SSL klien AMQP](rabbitmq-amqp-client-ssl-configuration.md).

**penting**  
Amazon MQ saat ini tidak mendukung konfigurasi sertifikat klien untuk koneksi klien AMQP. Akibatnya, federasi dan sekop tidak dapat terhubung ke broker berkemampuan MTLS yang memerlukan otentikasi sertifikat klien.

# Konfigurasi Batas Sumber Daya
<a name="configure-resource-limits"></a>

Amazon MQ untuk RabbitMQ mendukung konfigurasi batas sumber daya broker dari RabbitMQ 4 dan seterusnya. Saat Anda membuat broker, Amazon MQ secara otomatis menerapkan nilai default ke batas sumber daya ini. Default ini bertindak sebagai pagar pembatas untuk melindungi ketersediaan broker Anda sambil mengakomodasi pola penggunaan pelanggan umum. Anda dapat menyesuaikan perilaku broker Anda dengan mengubah nilai konfigurasi batas agar lebih sesuai dengan persyaratan beban kerja spesifik Anda. Untuk detail selengkapnya tentang nilai default dan maksimum yang diizinkan, lihat[Amazon MQ untuk pedoman ukuran RabbitMQ](rabbitmq-sizing-guidelines.md).

## Nama sumber daya dan kunci konfigurasi
<a name="resource-limit-configuration-keys"></a>


| Nama Sumber Daya | Kunci Konfigurasi | 
| --- | --- | 
| Koneksi | connection\$1max | 
| Channel | channel\$1max\$1per\$1node | 
| Antrean | cluster\$1queue\$1limit | 
| Vhost | vhost\$1max | 
| Sekop | runtime\$1parameters.limits.shovel | 
| .exchange | cluster\$1exchange\$1limit | 
| Konsumen per saluran | consumer\$1max\$1per\$1channel | 
| Ukuran pesan maksimal | max\$1message\$1size | 

## Cara mengganti batas sumber daya
<a name="override-resource-limits"></a>

Anda dapat mengganti batas sumber daya menggunakan Amazon MQ API dan konsol Amazon MQ.

Contoh berikut menunjukkan cara mengganti batas default hitungan antrian menggunakan: AWS CLI

```
aws mq update-configuration --configuration-id <config-id> --data "$(echo "cluster_queue_limit=500" | base64 --wrap=0)"
```

Pemanggilan yang berhasil membuat revisi konfigurasi. Anda harus mengaitkan konfigurasi ke broker RabbitMQ Anda dan me-reboot broker untuk menerapkan penggantian. Untuk lebih jelasnya lihat [RabbitMQ Broker Configurations](rabbitmq-broker-configuration-parameters.md) 

## Kesalahan penggantian batas sumber daya
<a name="resource-limit-override-errors"></a>

Mengaitkan atau membuat broker dengan nilai konfigurasi di luar rentang yang didukung menghasilkan respons kesalahan yang mirip dengan berikut ini:

```
Configuration Revision N for configuration:cluster_queue_limit has limit: of value: 100000000 larger than maximum allowed limit:5000
```

# Dukungan ARN dalam konfigurasi RabbitMQ
<a name="arn-support-rabbitmq-configuration"></a>

Amazon MQ untuk RabbitMQ mendukung AWS ARNs nilai beberapa pengaturan konfigurasi RabbitMQ. [Ini diaktifkan oleh plugin komunitas RabbitMQ rabbitmq-aws.](https://github.com/amazon-mq/rabbitmq-aws) Plugin ini dikembangkan dan dikelola oleh Amazon MQ dan juga dapat digunakan di broker RabbitMQ yang dihosting sendiri yang tidak dikelola oleh Amazon MQ.

**Pertimbangan penting**  
Nilai ARN yang diselesaikan yang diambil oleh plugin aws diteruskan langsung ke proses RabbitMQ saat runtime. Mereka tidak disimpan di tempat lain di node RabbitMQ.
Amazon MQ untuk RabbitMQ memerlukan peran IAM yang dapat diasumsikan oleh Amazon MQ untuk mengakses yang dikonfigurasi. ARNs Ini dikonfigurasi dengan pengaturan`aws.arns.assume_role_arn`.
Pengguna yang menelepon CreateBroker atau UpdateBroker APIs dengan konfigurasi broker yang menyertakan peran IAM harus memiliki `iam:PassRole` izin untuk peran itu.
Peran IAM harus ada di AWS akun yang sama dengan broker RabbitMQ. Semua ARNs dalam konfigurasi harus ada di AWS wilayah yang sama dengan broker RabbitMQ.
Amazon MQ menambahkan kunci bersyarat global IAM `aws:SourceAccount` dan `aws:SourceArn` saat mengasumsikan peran IAM. Nilai-nilai ini harus digunakan dalam kebijakan IAM yang melekat pada peran untuk [perlindungan wakil yang membingungkan](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).

**Topics**
+ [Kunci yang didukung](#arn-support-supported-keys)
+ [Sampel kebijakan IAM](#arn-support-iam-policy-samples)
+ [Validasi akses](#arn-support-validation)
+ [Negara karantina broker terkait](#arn-support-quarantine-states)
+ [Contoh skenario](#arn-support-example-scenario)

## Kunci yang didukung
<a name="arn-support-supported-keys"></a>

`aws.arns.assume_role_arn`  
IAM berperan ARN yang diasumsikan Amazon MQ untuk mengakses sumber daya lain. AWS Diperlukan ketika konfigurasi ARN lainnya digunakan.

### Titik akhir AMQP
<a name="arn-support-amqp-endpoint"></a>


| Kunci konfigurasi | Deskripsi | 
| --- | --- | 
| aws.arns.ssl\$1options.cacertfile | File otoritas sertifikat untuk koneksi SSL/TLS klien. Amazon MQ memerlukan penggunaan Amazon S3 atau untuk menyimpan sertifikat. | 

### Plugin manajemen RabbitMQ
<a name="arn-support-management-plugin"></a>


| Kunci konfigurasi | Deskripsi | 
| --- | --- | 
| aws.arns.management.ssl.cacertfile | File otoritas sertifikat untuk SSL/TLS koneksi antarmuka manajemen. Amazon MQ memerlukan penggunaan Amazon S3 atau untuk menyimpan sertifikat. | 

### Plugin RabbitMQ 2.0 OAuth
<a name="arn-support-oauth2-plugin"></a>


| Kunci konfigurasi | Deskripsi | 
| --- | --- | 
| aws.arns.auth\$1oauth2.https.cacertfile | File otoritas sertifikat untuk koneksi OAuth 2.0 HTTPS. Amazon MQ memerlukan penggunaan Amazon S3 atau untuk menyimpan sertifikat. | 

### Plugin otentikasi HTTP RabbitMQ
<a name="arn-support-http-plugin"></a>


| Kunci konfigurasi | Deskripsi | 
| --- | --- | 
| aws.arns.auth\$1http.ssl\$1options.cacertfile | File otoritas sertifikat untuk SSL/TLS koneksi otentikasi HTTP. Amazon MQ memerlukan penggunaan Amazon S3 atau untuk menyimpan sertifikat. | 
| aws.arns.auth\$1http.ssl\$1options.certfile | File sertifikat untuk koneksi TLS timbal balik antara Amazon MQ dan server otentikasi HTTP. Amazon MQ memerlukan penggunaan Amazon S3 atau untuk menyimpan sertifikat. | 
| aws.arns.auth\$1http.ssl\$1options.keyfile | File kunci pribadi untuk koneksi TLS timbal balik antara Amazon MQ dan server otentikasi HTTP. Amazon MQ membutuhkan penggunaan AWS Secrets Manager untuk menyimpan kunci pribadi. | 

### Plugin RabbitMQ LDAP
<a name="arn-support-ldap-plugin"></a>


| Kunci konfigurasi | Deskripsi | 
| --- | --- | 
| aws.arns.auth\$1ldap.ssl\$1options.cacertfile | File otoritas sertifikat untuk SSL/TLS koneksi LDAP. Amazon MQ memerlukan penggunaan Amazon S3 atau untuk menyimpan sertifikat. | 
| aws.arns.auth\$1ldap.ssl\$1options.certfile | File sertifikat untuk koneksi TLS timbal balik antara Amazon MQ dan server LDAP. Amazon MQ memerlukan penggunaan Amazon S3 atau untuk menyimpan sertifikat. | 
| aws.arns.auth\$1ldap.ssl\$1options.keyfile | File kunci pribadi untuk koneksi TLS timbal balik antara Amazon MQ dan server LDAP. Amazon MQ membutuhkan penggunaan AWS Secrets Manager untuk menyimpan kunci pribadi. | 
| aws.arns.auth\$1ldap.dn\$1lookup\$1bind.password | Kata sandi untuk LDAP DN lookup bind. Amazon MQ mengharuskan penggunaan AWS Secrets Manager untuk menyimpan kata sandi sebagai nilai teks biasa. | 
| aws.arns.auth\$1ldap.other\$1bind.password | Kata sandi untuk LDAP mengikat lainnya. Amazon MQ mengharuskan penggunaan AWS Secrets Manager untuk menyimpan kata sandi sebagai nilai teks biasa. | 

## Sampel kebijakan IAM
<a name="arn-support-iam-policy-samples"></a>

Untuk contoh kebijakan IAM termasuk mengasumsikan dokumen kebijakan peran dan dokumen kebijakan peran, lihat implementasi [sampel CDK](https://github.com/aws-samples/amazon-mq-samples/blob/main/rabbitmq-samples/rabbitmq-ldap-activedirectory-sample/lib/rabbitmq-activedirectory-stack.ts#L232).

Lihat [Menggunakan otentikasi dan otorisasi LDAP](rabbitmq-ldap-tutorial.md) langkah-langkah tentang cara mengatur AWS Secrets Manager dan sumber daya Amazon S3.

## Validasi akses
<a name="arn-support-validation"></a>

Untuk memecahkan masalah skenario di mana nilai ARN tidak dapat diambil, plugin aws mendukung [titik akhir API manajemen RabbitMQ](https://github.com/amazon-mq/rabbitmq-aws/blob/main/API.md) yang dapat dipanggil untuk memeriksa apakah Amazon MQ berhasil mengambil peran dan menyelesaikannya. AWS ARNs Ini menghindari kebutuhan untuk memperbarui konfigurasi broker, memperbarui broker dengan revisi konfigurasi baru dan reboot broker untuk menguji perubahan konfigurasi.

**catatan**  
Penggunaan API ini memerlukan pengguna administrator RabbitMQ yang sudah ada. Amazon MQ merekomendasikan untuk membuat pialang uji dengan pengguna internal selain metode akses lainnya. Lihat [mengaktifkan otentikasi OAuth 2.0 dan sederhana (internal)](oauth-tutorial.md#oauth-tutorial-config-both-auth-methods-using-cli). Pengguna ini kemudian dapat digunakan untuk mengakses API validasi.

**catatan**  
Meskipun plugin aws mendukung penerusan peran baru sebagai input ke API validasi, parameter ini tidak didukung oleh Amazon MQ. Peran IAM yang digunakan untuk validasi harus sesuai dengan nilai `aws.arns.assume_role_arn` dalam konfigurasi broker.

## Negara karantina broker terkait
<a name="arn-support-quarantine-states"></a>

Untuk informasi tentang status karantina broker yang terkait dengan masalah dukungan ARN, lihat:
+ [RABBITMQ\$1INVALID\$1ASSUMEROLE](troubleshooting-action-required-codes-invalid-assumerole.md)
+ [RABBITMQ\$1INVALID\$1ARN\$1LDAP](troubleshooting-action-required-codes-invalid-arn-ldap.md)
+ [RABBITMQ\$1INVALID\$1ARN](troubleshooting-action-required-codes-invalid-arn.md)

## Contoh skenario
<a name="arn-support-example-scenario"></a>
+ Broker `b-f0fc695e-2f9c-486b-845a-988023a3e55b` telah dikonfigurasi untuk menggunakan peran IAM `<role>` untuk mengakses rahasia AWS Secrets Manager `<arn>`
+ Jika peran yang diberikan ke Amazon MQ tidak memiliki izin baca pada AWS Secrets Manager rahasia, kesalahan berikut akan ditampilkan di log RabbitMQ:

  ```
  [error] <0.254.0> aws_arn_config: {handle_assume_role,{error,{assume_role_failed,"AWS service is unavailable"}}}
  ```

  Selain itu, broker akan memasuki negara `INVALID_ASSUMEROLE` karantina. Untuk informasi lebih lanjut, lihat [INVALID\$1ASSUMEROLE](troubleshooting-action-required-codes-invalid-assumerole.md).
+ Upaya otentikasi LDAP akan gagal dengan kesalahan berikut:

  ```
  [error] <0.254.0> LDAP bind failed: invalid_credentials
  ```
+ Perbaiki peran IAM dengan izin yang tepat
+ Panggil titik akhir validasi untuk memverifikasi apakah RabbitMQ sekarang dapat mengakses rahasia:

  ```
  curl -4su 'guest:guest' -XPUT -H 'content-type: application/json' <broker-endpoint>/api/aws/arn/validate -d '{"assume_role_arn":"arn:aws:iam::<account-id>:role/<role-name>","arns":["arn:aws:secretsmanager:<region>:<account-id>:secret:<secret-name>"]}' | jq '.'
  ```

# Konfigurasi SSL klien AMQP
<a name="rabbitmq-amqp-client-ssl-configuration"></a>

 Federasi dan sekop menggunakan AMQP untuk komunikasi antara broker hulu dan hilir. Secara default, *verifikasi rekan TLS* diaktifkan untuk klien AMQP di Amazon MQ untuk RabbitMQ 4. Dengan pengaturan ini, federasi dan sekop klien AMQP yang berjalan di broker Amazon MQ akan melakukan verifikasi rekan saat membuat koneksi dengan broker hulu. 

 Klien AMQP yang berjalan di broker Amazon MQ mendukung otoritas sertifikat yang sama dengan Mozilla. Jika Anda tidak menggunakan [ACM](https://www.amazontrust.com/repository), gunakan sertifikat yang dikeluarkan oleh CA pada Daftar [Sertifikat CA Termasuk Mozilla](https://wiki.mozilla.org/CA/Included_Certificates). Jika broker lokal Anda menggunakan sertifikat dari otoritas sertifikat lain, verifikasi SSL akan gagal. Anda dapat menonaktifkan *verifikasi rekan TLS untuk kasus* penggunaan ini. 

**penting**  
Amazon MQ saat ini tidak mendukung konfigurasi sertifikat klien untuk koneksi klien AMQP. Akibatnya, federasi dan sekop tidak dapat terhubung ke broker berkemampuan MTLS yang memerlukan otentikasi sertifikat klien.

**penting**  
 *Di Amazon MQ untuk properti SSL RabbitMQ 3 klien AMQP dikonfigurasi dengan default RabbitMQ (verify\$1none).* Amazon MQ untuk RabbitMQ 3 tidak mendukung penggantian default ini. 

**catatan**  
Dengan `verify_peer` pengaturan default, Anda dapat membuat koneksi federasi dan sekop antara 2 broker MQ Amazon, tetapi ini tidak mendukung pembuatan koneksi antara broker MQ Amazon dan broker swasta atau broker lokal yang menjalankan sertifikat MQ CA non-Amazon. Untuk terhubung dengan broker pribadi atau lokal, Anda perlu menonaktifkan verifikasi rekan di broker Amazon MQ hilir.

## Kunci konfigurasi SSL klien AMQP
<a name="amqp-client-ssl-configuration-keys"></a>


| Konfigurasi | Kunci Konfigurasi | Nilai yang Didukung | 
| --- | --- | --- | 
| Verifikasi rekan SSL klien AMQP | amqp\$1client.ssl\$1options.verify | verify\$1none, verify\$1peer | 

## Cara mengganti verifikasi rekan SSL klien AMQP
<a name="override-amqp-client-ssl-peer-verification"></a>

Anda dapat mengganti verifikasi rekan SSL klien AMQP menggunakan API Amazon MQ dan konsol Amazon MQ di broker RabbitMQ 4.

Contoh berikut menunjukkan cara mengganti verifikasi rekan SSL klien AMQP menggunakan: AWS CLI

```
aws mq update-configuration --configuration-id <config-id> --data "$(echo "amqp_client.ssl_options.verify=verify_none" | base64 --wrap=0)"
```

Pemanggilan yang berhasil membuat revisi konfigurasi. Anda harus mengaitkan konfigurasi ke broker RabbitMQ Anda dan me-reboot broker untuk menerapkan penggantian. Untuk lebih jelasnya lihat [Creating and applying broker configurations](rabbitmq-creating-applying-configurations.md) 

**penting**  
Saat menggunakan`verify_none`, enkripsi SSL masih aktif, tetapi identitas rekan tidak diverifikasi. Gunakan pengaturan ini hanya jika diperlukan dan pastikan bahwa Anda mempercayai jalur jaringan ke broker tujuan.

# Amazon MQ untuk Otentikasi dan Otorisasi RabbitMQ
<a name="rabbitmq-authentication"></a>

Amazon MQ untuk RabbitMQ mendukung metode otentikasi dan otorisasi berikut:

## Otentikasi dan otorisasi sederhana
<a name="rabbitmq-simple-auth"></a>

 Dalam metode ini, pengguna broker disimpan secara internal di broker RabbitMQ dan dikelola melalui konsol web atau API manajemen. Izin untuk vhost, pertukaran, antrian, dan topik dikonfigurasi langsung di RabbitMQ. Ini adalah metode default. Untuk informasi selengkapnya, lihat [Otentikasi dan otorisasi sederhana](rabbitmq-simple-auth-broker-users.md). 

## OAuth 2.0 otentikasi dan otorisasi
<a name="rabbitmq-oauth-auth"></a>

Dalam metode ini, pengguna broker dan izin mereka dikelola oleh penyedia identitas OAuth 2.0 eksternal (iDP). Otentikasi pengguna dan izin sumber daya untuk vhost, pertukaran, antrian, dan topik dipusatkan melalui sistem lingkup penyedia 2.0. OAuth Ini menyederhanakan manajemen pengguna dan memungkinkan integrasi dengan sistem identitas yang ada. Untuk informasi selengkapnya, lihat [otentikasi dan otorisasi OAuth 2.0](oauth-for-amq-for-rabbitmq.md).

## Otentikasi dan otorisasi IAM
<a name="rabbitmq-iam-auth"></a>

[Dalam metode ini, pengguna broker mengautentikasi menggunakan kredensyal AWS IAM melalui federasi keluar IAM.](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html) Kredensyal IAM digunakan untuk mendapatkan token JWT dari AWS Security Token Service (STS), dan token JWT ini berfungsi sebagai token 2.0 untuk otentikasi. OAuth Metode ini memanfaatkan dukungan OAuth 2.0 yang ada di Amazon MQ untuk RabbitMQ, AWS di mana bertindak sebagai penyedia identitas 2.0. OAuth Otentikasi pengguna ditangani oleh AWS IAM, sementara izin sumber daya untuk vhost, pertukaran, antrian, dan topik dikelola melalui kebijakan IAM dan alias ruang lingkup yang dikonfigurasi di RabbitMQ. Untuk informasi selengkapnya, lihat [autentikasi dan otorisasi IAM](iam-for-amq-for-rabbitmq.md).

## Otentikasi dan otorisasi LDAP
<a name="rabbitmq-ldap-auth"></a>

Dalam metode ini, pengguna broker dan izin mereka dikelola oleh layanan direktori LDAP eksternal. Otentikasi pengguna dan izin sumber daya dipusatkan melalui server LDAP, memungkinkan pengguna untuk mengakses RabbitMQ menggunakan kredensyal layanan direktori yang ada. Untuk informasi selengkapnya, lihat [otentikasi dan otorisasi LDAP](ldap-for-amq-for-rabbitmq.md).

## Otentikasi dan otorisasi HTTP
<a name="rabbitmq-http-auth"></a>

Dalam metode ini, pengguna broker dan izin mereka dikelola oleh server HTTP eksternal. Otentikasi pengguna dan izin sumber daya dipusatkan melalui server HTTP, memungkinkan pengguna untuk mengakses RabbitMQ menggunakan penyedia Otentikasi dan Otorisasi mereka sendiri. Untuk informasi selengkapnya tentang metode ini, lihat [otentikasi dan otorisasi HTTP](http-for-amq-for-rabbitmq.md).

## Otentikasi sertifikat SSL
<a name="rabbitmq-ssl-cert-auth"></a>

Amazon MQ mendukung TLS bersama (MTLS) untuk broker RabbitMQ. Plugin otentikasi SSL menggunakan sertifikat klien dari koneksi mTLS untuk mengautentikasi pengguna. Dalam metode ini, pengguna broker diautentikasi menggunakan sertifikat klien X.509 alih-alih kredensyal nama pengguna dan kata sandi. Sertifikat klien divalidasi terhadap Otoritas Sertifikat (CA) tepercaya, dan nama pengguna diekstraksi dari bidang dalam sertifikat, seperti Nama Umum (CN) atau Nama Alternatif Subjek (SAN). Metode ini memberikan otentikasi yang kuat tanpa mentransmisikan kredensyal melalui jaringan. Untuk informasi selengkapnya, lihat [otentikasi sertifikat SSL](ssl-for-amq-for-rabbitmq.md).

**catatan**  
RabbitMQ mendukung beberapa metode otentikasi dan otorisasi untuk digunakan secara bersamaan. Misalnya, Anda dapat mengaktifkan otentikasi OAuth 2.0 dan sederhana (internal). Untuk informasi lebih lanjut, lihat bagian tutorial OAuth 2.0 tentang [mengaktifkan otentikasi OAuth 2.0 dan sederhana (internal)](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/oauth-tutorial.html#oauth-tutorial-config-both-auth-methods-using-cli) dan dokumentasi kontrol akses [RabbitMQ](https://www.rabbitmq.com/docs/access-control).  
Amazon MQ merekomendasikan untuk membuat pengguna internal saat menguji konfigurasi otentikasi. Hal ini memungkinkan konfigurasi akses untuk divalidasi menggunakan RabbitMQ management API. Untuk informasi selengkapnya, lihat [Validasi akses](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/arn-support-rabbitmq-configuration.html#access-validation).

# Otentikasi dan otorisasi sederhana
<a name="rabbitmq-simple-auth-broker-users"></a>

## Amazon MQ untuk pengguna broker RabbitMQ
<a name="rabbitmq-basic-elements-user"></a>

**catatan**  
Topik ini menjelaskan pengelolaan pengguna broker dengan otentikasi internal default dan mekanisme otorisasi RabbitMQ. Untuk informasi tentang semua metode autentikasi dan otorisasi yang didukung, lihat [Amazon MQ untuk Otentikasi dan Otorisasi RabbitMQ](rabbitmq-authentication.md).

 Setiap koneksi klien AMQP 0-9-1 memiliki pengguna terkait. Pengguna ini harus diautentikasi. Setiap koneksi klien juga menargetkan host virtual (vhost). Pengguna harus memiliki satu set izin untuk vhost ini. Pengguna mungkin memiliki izin untuk **mengonfigurasi**, **menulis** ke, serta **membaca** dari antrean dan pertukaran di vhost. Anda menentukan kredensyal pengguna dan vhost target saat koneksi dibuat.

 Saat pertama kali membuat Amazon MQ untuk broker RabbitMQ, Amazon MQ menggunakan kredensyal masuk yang Anda berikan untuk membuat pengguna RabbitMQ dengan tag tersebut. `administrator` Kemudian Anda dapat menambahkan dan mengelola pengguna melalui [API manajemen](https://www.rabbitmq.com/management.html) RabbitMQ atau konsol web RabbitMQ. Anda juga dapat menggunakan konsol web RabbitMQ atau API manajemen untuk mengatur atau memodifikasi izin pengguna dan tanda. 

**catatan**  
Pengguna RabbitMQ tidak akan disimpan atau ditampilkan melalui API [Pengguna](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/brokers-broker-id-users.html) Amazon MQ.

**penting**  
Amazon MQ untuk RabbitMQ tidak mendukung nama pengguna “tamu”, dan akan menghapus akun tamu default saat Anda membuat broker baru. Amazon MQ juga akan secara berkala menghapus akun yang dibuat pelanggan yang disebut “tamu”.

 Untuk membuat pengguna baru dengan API manajemen RabbitMQ, gunakan titik akhir API berikut dan isi permintaan. Ganti *username* dan *password* dengan kredensyal masuk baru Anda. 

```
PUT /api/users/username HTTP/1.1
        
    {"password":"password","tags":"administrator"}
```

**penting**  
 Jangan menambahkan informasi identitas pribadi (PII) atau informasi rahasia atau sensitif lainnya dalam nama pengguna broker. Nama pengguna broker dapat diakses oleh AWS layanan lain, termasuk CloudWatch Log. Nama pengguna broker tidak dimaksudkan untuk digunakan untuk data pribadi atau sensitif. 
Jika Anda kehilangan akses ke semua akun administrator, lihat [memulihkan akses broker](troubleshooting-rabbitmq.md#rabbitmq-broker-recovery) untuk menggunakan otentikasi IAM untuk pemulihan.

Kunci `tags` adalah hal wajib, dan merupakan daftar tanda yang dipisahkan koma untuk pengguna. Amazon MQ mendukung`administrator`,, `management``monitoring`, dan tag `policymaker` pengguna.

Anda dapat mengatur izin untuk pengguna individu dengan menggunakan titik akhir API berikut dan isi permintaan. Ganti *vhost* dan *username* dengan informasi Anda. Untuk vhost default `/`, gunakan `%2F`.

```
PUT /api/permissions/vhost/username HTTP/1.1

    {"configure":".*","write":".*","read":".*"}
```

**catatan**  
Kunci `configure`, `read`, dan `write` merupakan hal wajib.

Dengan menggunakan nilai `.*` wildcard, operasi ini akan memberikan pengguna izin membaca, menulis, dan mengonfigurasi untuk semua antrean di vhost yang ditentukan. Untuk informasi selengkapnya tentang mengelola pengguna melalui API manajemen RabbitMQ, lihat [HTTP API Manajemen RabbitMQ](https://rawcdn.githack.com/rabbitmq/rabbitmq-server/main/deps/rabbitmq_management/priv/www/api/index.html).

# OAuth 2.0 otentikasi dan otorisasi untuk Amazon MQ untuk RabbitMQ
<a name="oauth-for-amq-for-rabbitmq"></a>

Amazon MQ untuk RabbitMQ mendukung beberapa metode otentikasi dan otorisasi. Untuk informasi tentang semua metode yang didukung, lihat [Otentikasi dan otorisasi Amazon MQ untuk broker RabbitMQ](rabbitmq-authentication.md).

Dalam otentikasi dan otorisasi OAuth 2.0, pengguna broker dan izin mereka dikelola oleh penyedia identitas OAuth 2.0 eksternal (iDP). Otentikasi pengguna dan izin sumber daya untuk vhost, pertukaran, antrian, dan topik dipusatkan melalui sistem lingkup penyedia 2.0. OAuth Ini menyederhanakan manajemen pengguna dan memungkinkan integrasi dengan sistem identitas yang ada.

**Pertimbangan penting**  
OAuth Integrasi 2.0 tidak didukung di Amazon MQ untuk broker ActiveMQ.
Amazon MQ untuk RabbitMQ tidak mendukung sertifikat server yang dikeluarkan oleh CA pribadi.
Plugin RabbitMQ OAuth 2.0 tidak mendukung titik akhir introspeksi token dan token akses buram. Itu juga tidak melakukan pemeriksaan pencabutan token.
Anda harus menyertakan izin IAM,`mq:UpdateBrokerAccessConfiguration`, untuk mengaktifkan OAuth 2.0 pada broker yang ada.
Amazon MQ secara otomatis membuat pengguna sistem bernama `monitoring-AWS-OWNED-DO-NOT-DELETE` dengan izin pemantauan saja. Pengguna ini menggunakan sistem otentikasi internal RabbitMQ bahkan pada broker yang OAuth mendukung 2.0 dan dibatasi hanya untuk akses antarmuka loopback.

Untuk informasi tentang cara mengkonfigurasi OAuth 2.0 untuk Amazon MQ Anda untuk broker RabbitMQ, lihat. [Menggunakan otentikasi dan otorisasi OAuth 2.0](oauth-tutorial.md)

**Topics**
+ [Konfigurasi OAuth 2.0 yang didukung](#oauth-tutorial-supported-configs)
+ [Validasi tambahan untuk otentikasi 2.0 OAuth](#oauth-tutorial-additional-validations)

## Konfigurasi OAuth 2.0 yang didukung
<a name="oauth-tutorial-supported-configs"></a>

Amazon MQ untuk RabbitMQ mendukung semua [variabel yang dapat dikonfigurasi](https://www.rabbitmq.com/docs/oauth2#variables-configurable) di plugin OAuth RabbitMQ 2.0, dengan pengecualian berikut:
+ `auth_oauth2.https.cacertfile`
+ `auth_oauth2.oauth_providers.{id/index}.https.cacertfile`
+ `management.oauth_client_secret`

  Karena Amazon MQ tidak mendukung kunci ini, kami tidak mendukung UAA sebagai IDP.
+ `management.oauth_resource_servers.{id/index}.oauth_client_secret`
+ `auth_oauth2.signing_keys.{id/index}`

## Validasi tambahan untuk otentikasi 2.0 OAuth
<a name="oauth-tutorial-additional-validations"></a>

Amazon MQ juga memberlakukan validasi tambahan berikut untuk otentikasi 2.0: OAuth 
+ Semua URLs harus dimulai dengan`https://`.
+ Algoritma tanda tangan yang didukung: `Ed25519``Ed25519ph`,`Ed448`,`Ed448ph`,`EdDSA`,`ES256K`,,`ES256`,`ES384`,`ES512`,`HS256`,`HS384`,`HS512`,`PS256`,`PS384`,,`PS512`, `RS256``RS384`, dan`RS512`.

# Otentikasi dan otorisasi IAM untuk Amazon MQ untuk RabbitMQ
<a name="iam-for-amq-for-rabbitmq"></a>

Amazon MQ untuk RabbitMQ mendukung beberapa metode otentikasi dan otorisasi. Untuk informasi tentang semua metode yang didukung, lihat [Otentikasi dan otorisasi Amazon MQ untuk broker RabbitMQ](rabbitmq-authentication.md).

[Otentikasi dan otorisasi IAM memungkinkan pengguna broker untuk mengautentikasi menggunakan kredensi IAM melalui federasi AWS keluar IAM.](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html) Dalam metode ini, kredensi IAM digunakan untuk mendapatkan token JWT dari AWS Security Token Service (STS). Token JWT ini berfungsi sebagai token OAuth 2.0 untuk otentikasi, memanfaatkan dukungan 2.0 yang ada di Amazon MQ untuk RabbitMQ di mana bertindak sebagai penyedia identitas OAuth 2.0. AWS OAuth AWS IAM menangani otentikasi pengguna, sementara izin sumber daya untuk host virtual, pertukaran, antrian, dan topik dikelola melalui kebijakan IAM dan alias lingkup yang dikonfigurasi di RabbitMQ.

**Pertimbangan penting**  
Autentikasi IAM didukung pada RabbitMQ versi 3.13, 4.2 dan di atasnya. Itu tidak didukung di Amazon MQ untuk broker ActiveMQ.
Autentikasi IAM mengharuskan federasi keluar IAM untuk dikonfigurasi dan tersedia di akun Anda. AWS 
Metode ini dibangun di atas infrastruktur OAuth 2.0 yang ada di Amazon MQ untuk RabbitMQ, AWS dengan berfungsi sebagai penyedia identitas 2.0. OAuth 
Amazon MQ secara otomatis membuat pengguna sistem bernama `monitoring-AWS-OWNED-DO-NOT-DELETE` dengan izin pemantauan saja. Pengguna ini menggunakan sistem otentikasi internal RabbitMQ bahkan pada broker yang mendukung IAM dan dibatasi hanya untuk akses antarmuka loopback.

**Topics**
+ [Cara kerja otentikasi IAM](#iam-authentication-overview)
+ [Batasan](#iam-authentication-limitations)

## Cara kerja otentikasi IAM
<a name="iam-authentication-overview"></a>

Otentikasi IAM untuk Amazon MQ untuk RabbitMQ [menggunakan federasi keluar IAM untuk mengaktifkan kredensi IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html) untuk mengautentikasi dengan broker RabbitMQ. AWS Kredensi IAM digunakan untuk mendapatkan token JWT dari AWS Security Token Service (STS), dan token JWT ini berfungsi sebagai token OAuth 2.0 untuk otentikasi dengan broker RabbitMQ.

## Batasan
<a name="iam-authentication-limitations"></a>

Autentikasi IAM untuk Amazon MQ untuk RabbitMQ memiliki batasan sebagai berikut:
+ **Konfigurasi klaim cakupan** — Anda tidak dapat menggunakan klaim cakupan secara langsung karena token JWT dari STS bersarang. Kuncinya adalah`sts.amazonaws.com`, yang mengharuskan penggunaan alias lingkup dalam konfigurasi RabbitMQ untuk memetakan peran IAM ke izin RabbitMQ. Batasan ini juga mencegah penggunaan kebijakan IAM untuk otorisasi sepenuhnya, memerlukan konfigurasi RabbitMQ untuk otorisasi sebagai gantinya.

Untuk informasi tentang cara mengonfigurasi autentikasi dan otorisasi IAM untuk Amazon MQ Anda untuk broker RabbitMQ, lihat. [Menggunakan otentikasi dan otorisasi IAM](rabbitmq-iam-tutorial.md)

# Otentikasi HTTP dan otorisasi untuk Amazon MQ untuk RabbitMQ
<a name="http-for-amq-for-rabbitmq"></a>

Amazon MQ untuk RabbitMQ mendukung otentikasi dan otorisasi pengguna broker menggunakan server HTTP eksternal. Untuk metode lain yang didukung, lihat [Otentikasi dan otorisasi untuk Amazon MQ untuk broker RabbitMQ](rabbitmq-authentication.md).

**catatan**  
Plugin otentikasi HTTP hanya tersedia untuk Amazon MQ untuk RabbitMQ versi 4 ke atas.

**Pertimbangan penting**  
Server HTTP harus dapat diakses melalui internet publik. Amazon MQ untuk RabbitMQ dapat dikonfigurasi untuk mengautentikasi ke server HTTP menggunakan TLS timbal balik.
Amazon MQ untuk RabbitMQ memberlakukan penggunaan AWS ARNs untuk pengaturan yang memerlukan akses ke sistem file lokal. Lihat [dukungan ARN dalam konfigurasi RabbitMQ](arn-support-rabbitmq-configuration.md) untuk detail selengkapnya.
Anda harus menyertakan izin IAM`mq:UpdateBrokerAccessConfiguration`, untuk mengaktifkan otentikasi HTTP pada broker yang ada.
Amazon MQ secara otomatis membuat pengguna sistem bernama `monitoring-AWS-OWNED-DO-NOT-DELETE` dengan izin pemantauan saja. Pengguna ini menggunakan sistem otentikasi internal RabbitMQ bahkan pada broker yang mendukung HTTP dan dibatasi hanya untuk akses antarmuka loopback. [Amazon MQ mencegah penghapusan pengguna ini dengan menambahkan tag pengguna yang dilindungi.](https://github.com/rabbitmq/rabbitmq-server/blob/3751301d5a851f3f0a7d0b15583e52cb81af4e6b/release-notes/4.2.0.md#enhancements-3)

Untuk informasi tentang cara mengonfigurasi otentikasi HTTP untuk Amazon MQ Anda untuk broker RabbitMQ, lihat. [Menggunakan otentikasi dan otorisasi HTTP](rabbitmq-http-tutorial.md)

**Topics**
+ [Konfigurasi HTTP yang didukung](#http-supported-configs)
+ [Validasi tambahan untuk konfigurasi HTTP di Amazon MQ](#http-additional-validations)

## Konfigurasi HTTP yang didukung
<a name="http-supported-configs"></a>

Amazon MQ untuk RabbitMQ mendukung semua variabel yang dapat dikonfigurasi di plugin [otentikasi HTTP RabbitMQ](https://github.com/rabbitmq/rabbitmq-auth-backend-http), dengan pengecualian berikut yang memerlukan. AWS ARNs Untuk detail tentang dukungan ARN, lihat dukungan ARN dalam konfigurasi [RabbitMQ](arn-support-rabbitmq-configuration.md).

### Konfigurasi yang membutuhkan ARNs
<a name="http-arn-required-configs"></a>

`auth_http.ssl_options.cacertfile`  
Gunakan `aws.arns.auth_http.ssl_options.cacertfile` sebagai gantinya

`auth_http.ssl_options.certfile`  
Gunakan `aws.arns.auth_http.ssl_options.certfile` sebagai gantinya

`auth_http.ssl_options.keyfile`  
Gunakan `aws.arns.auth_http.ssl_options.keyfile` sebagai gantinya

### Opsi SSL yang tidak didukung
<a name="http-unsupported-ssl-options"></a>

Opsi konfigurasi SSL berikut juga tidak didukung:

#### Lihat daftar lengkap
<a name="http-ssl-options-list-content"></a>
+ `auth_http.ssl_options.cert`
+ `auth_http.ssl_options.client_renegotiation`
+ `auth_http.ssl_options.dh`
+ `auth_http.ssl_options.dhfile`
+ `auth_http.ssl_options.honor_cipher_order`
+ `auth_http.ssl_options.honor_ecc_order`
+ `auth_http.ssl_options.key.RSAPrivateKey`
+ `auth_http.ssl_options.key.DSAPrivateKey`
+ `auth_http.ssl_options.key.PrivateKeyInfo`
+ `auth_http.ssl_options.log_alert`
+ `auth_http.ssl_options.password`
+ `auth_http.ssl_options.psk_identity`
+ `auth_http.ssl_options.reuse_sessions`
+ `auth_http.ssl_options.secure_renegotiate`
+ `auth_http.ssl_options.versions.$version`
+ `auth_http.ssl_options.sni`
+ `auth_http.ssl_options.crl_check`

## Validasi tambahan untuk konfigurasi HTTP di Amazon MQ
<a name="http-additional-validations"></a>

Amazon MQ juga memberlakukan validasi tambahan berikut untuk otentikasi dan otorisasi HTTP:
+ `auth_http.http_method`harus salah satu `get` atau `post`
+ Konfigurasi jalur berikut harus menggunakan HTTPS: URLs
  + `auth_http.user_path`
  + `auth_http.vhost_path`
  + `auth_http.resource_path`
  + `auth_http.topic_path`
+ Jika pengaturan apapun memerlukan penggunaan AWS ARN, `aws.arns.assume_role_arn` harus disediakan.

# Otentikasi sertifikat SSL untuk Amazon MQ untuk RabbitMQ
<a name="ssl-for-amq-for-rabbitmq"></a>

Amazon MQ untuk RabbitMQ mendukung otentikasi pengguna broker menggunakan sertifikat klien X.509. Untuk metode lain yang didukung, lihat [Otentikasi dan otorisasi untuk Amazon MQ untuk broker RabbitMQ](rabbitmq-authentication.md).

**catatan**  
Plugin otentikasi sertifikat SSL hanya tersedia untuk Amazon MQ untuk RabbitMQ versi 4 ke atas.

**Pertimbangan penting**  
Sertifikat klien harus ditandatangani oleh Otoritas Sertifikat (CA) tepercaya. Amazon MQ untuk RabbitMQ memvalidasi rantai sertifikat selama otentikasi.
Amazon MQ untuk RabbitMQ memberlakukan penggunaan AWS ARNs untuk pengaturan terkait sertifikat seperti sertifikat CA dan untuk pengaturan yang memerlukan akses ke sistem file lokal. Lihat [dukungan ARN dalam konfigurasi RabbitMQ](arn-support-rabbitmq-configuration.md) untuk detail selengkapnya.
Amazon MQ secara otomatis membuat pengguna sistem bernama `monitoring-AWS-OWNED-DO-NOT-DELETE` dengan izin pemantauan saja. Pengguna ini menggunakan sistem otentikasi internal RabbitMQ bahkan pada broker yang mendukung sertifikat SSL dan dibatasi hanya untuk akses antarmuka loopback. [Amazon MQ mencegah penghapusan pengguna ini dengan menambahkan tag pengguna yang dilindungi.](https://github.com/rabbitmq/rabbitmq-server/blob/3751301d5a851f3f0a7d0b15583e52cb81af4e6b/release-notes/4.2.0.md#enhancements-3)

Untuk informasi tentang cara mengonfigurasi otentikasi sertifikat SSL untuk Amazon MQ Anda untuk broker RabbitMQ, lihat. [Menggunakan otentikasi sertifikat SSL](rabbitmq-ssl-tutorial.md)

**Topics**
+ [Konfigurasi SSL yang didukung](#ssl-supported-configs)
+ [Validasi tambahan untuk konfigurasi SSL di Amazon MQ](#ssl-additional-validations)

## Konfigurasi SSL yang didukung
<a name="ssl-supported-configs"></a>

Amazon MQ untuk RabbitMQ mendukung SSL/TLS konfigurasi untuk koneksi klien. Untuk detail tentang dukungan ARN, lihat dukungan ARN dalam konfigurasi [RabbitMQ](arn-support-rabbitmq-configuration.md).

### Konfigurasi yang membutuhkan ARNs
<a name="ssl-arn-required-configs"></a>

`ssl_options.cacertfile`  
Gunakan `aws.arns.ssl_options.cacertfile` sebagai gantinya

### Konfigurasi login sertifikat SSL
<a name="ssl-cert-login-configs"></a>

Konfigurasi berikut mengontrol cara nama pengguna diekstraksi dari sertifikat klien:

`ssl_cert_login_from`  
Menentukan bidang sertifikat yang akan digunakan untuk ekstraksi nama pengguna. Nilai yang didukung:  
+ `distinguished_name`- Gunakan Nama Distinguished lengkap
+ `common_name`- Gunakan bidang Nama Umum (CN)
+ `subject_alternative_name`atau `subject_alt_name` - Gunakan Nama Alternatif Subjek

`ssl_cert_login_san_type`  
Saat menggunakan Nama Alternatif Subjek, menentukan jenis SAN. Nilai yang didukung:`dns`,`ip`,`email`,`uri`, `other_name`

`ssl_cert_login_san_index`  
Saat menggunakan Nama Alternatif Subjek, menentukan indeks entri SAN yang akan digunakan (berbasis nol). Harus berupa bilangan bulat non-negatif.

### Opsi SSL untuk koneksi klien
<a name="ssl-options-configs"></a>

Opsi SSL berikut berlaku untuk koneksi klien:

`ssl_options.verify`  
Mode verifikasi rekan. Nilai yang didukung:`verify_none`, `verify_peer`

`ssl_options.fail_if_no_peer_cert`  
Apakah akan menolak koneksi jika klien tidak memberikan sertifikat. Nilai Boolean.

`ssl_options.depth`  
Kedalaman rantai sertifikat maksimum untuk verifikasi.

`ssl_options.hostname_verification`  
Mode verifikasi nama host. Nilai yang didukung:`wildcard`, `none`

### Opsi SSL yang tidak didukung
<a name="ssl-unsupported-options"></a>

Opsi konfigurasi SSL berikut tidak didukung:

#### Lihat daftar lengkap
<a name="ssl-options-list-content"></a>
+ `ssl_options.cert`
+ `ssl_options.client_renegotiation`
+ `ssl_options.dh`
+ `ssl_options.dhfile`
+ `ssl_options.honor_cipher_order`
+ `ssl_options.honor_ecc_order`
+ `ssl_options.key.RSAPrivateKey`
+ `ssl_options.key.DSAPrivateKey`
+ `ssl_options.key.PrivateKeyInfo`
+ `ssl_options.log_alert`
+ `ssl_options.password`
+ `ssl_options.psk_identity`
+ `ssl_options.reuse_sessions`
+ `ssl_options.secure_renegotiate`
+ `ssl_options.versions.$version`
+ `ssl_options.sni`
+ `ssl_options.crl_check`

## Validasi tambahan untuk konfigurasi SSL di Amazon MQ
<a name="ssl-additional-validations"></a>

Amazon MQ juga memberlakukan validasi tambahan berikut untuk otentikasi sertifikat SSL:
+ Jika pengaturan apapun memerlukan penggunaan AWS ARN, `aws.arns.assume_role_arn` harus disediakan.

# Otentikasi dan otorisasi LDAP untuk Amazon MQ untuk RabbitMQ
<a name="ldap-for-amq-for-rabbitmq"></a>

Amazon MQ untuk RabbitMQ mendukung otentikasi dan otorisasi pengguna broker menggunakan server LDAP eksternal. Untuk metode lain yang didukung, lihat [Otentikasi dan otorisasi untuk Amazon MQ untuk broker RabbitMQ](rabbitmq-authentication.md).

**Pertimbangan penting**  
Server LDAP harus dapat diakses melalui internet publik. Amazon MQ untuk RabbitMQ dapat dikonfigurasi untuk mengautentikasi ke server LDAP menggunakan TLS timbal balik.
Amazon MQ untuk RabbitMQ memberlakukan penggunaan AWS ARNs untuk pengaturan LDAP sensitif seperti kata sandi dan untuk pengaturan yang memerlukan akses ke sistem file lokal. Lihat [dukungan ARN dalam konfigurasi RabbitMQ](arn-support-rabbitmq-configuration.md) untuk detail selengkapnya.
Anda harus menyertakan izin IAM,`mq:UpdateBrokerAccessConfiguration`, untuk mengaktifkan LDAP pada broker yang ada.
Amazon MQ secara otomatis membuat pengguna sistem bernama `monitoring-AWS-OWNED-DO-NOT-DELETE` dengan izin pemantauan saja. Pengguna ini menggunakan sistem otentikasi internal RabbitMQ bahkan pada broker yang mendukung LDAP dan dibatasi hanya untuk akses antarmuka loopback. [Amazon MQ mencegah penghapusan pengguna ini dengan menambahkan tag pengguna yang dilindungi.](https://github.com/rabbitmq/rabbitmq-server/blob/3751301d5a851f3f0a7d0b15583e52cb81af4e6b/release-notes/4.2.0.md#enhancements-3)

Untuk informasi tentang cara mengkonfigurasi LDAP untuk Amazon MQ Anda untuk broker RabbitMQ, lihat. [Menggunakan otentikasi dan otorisasi LDAP](rabbitmq-ldap-tutorial.md)

**Topics**
+ [Konfigurasi LDAP yang didukung](#ldap-supported-configs)
+ [Validasi tambahan untuk konfigurasi LDAP di Amazon MQ](#ldap-additional-validations)

## Konfigurasi LDAP yang didukung
<a name="ldap-supported-configs"></a>

Amazon MQ untuk RabbitMQ mendukung semua variabel yang dapat dikonfigurasi di plugin [RabbitMQ LDAP](https://www.rabbitmq.com/docs/ldap), dengan pengecualian berikut yang memerlukan. AWS ARNs Untuk detail tentang dukungan ARN, lihat dukungan ARN dalam konfigurasi [RabbitMQ](arn-support-rabbitmq-configuration.md).

### Konfigurasi yang membutuhkan ARNs
<a name="ldap-arn-required-configs"></a>

`auth_ldap.dn_lookup_bind.password`  
Gunakan `aws.arns.auth_ldap.dn_lookup_bind.password` sebagai gantinya

`auth_ldap.other_bind.password`  
Gunakan `aws.arns.auth_ldap.other_bind.password` sebagai gantinya

`auth_ldap.ssl_options.cacertfile`  
Gunakan `aws.arns.auth_ldap.ssl_options.cacertfile` sebagai gantinya

`auth_ldap.ssl_options.certfile`  
Gunakan `aws.arns.auth_ldap.ssl_options.certfile` sebagai gantinya

`auth_ldap.ssl_options.keyfile`  
Gunakan `aws.arns.auth_ldap.ssl_options.keyfile` sebagai gantinya

### Opsi SSL yang tidak didukung
<a name="ldap-unsupported-ssl-options"></a>

Opsi konfigurasi SSL berikut juga tidak didukung:

#### Lihat daftar lengkap
<a name="ldap-ssl-options-list-content"></a>
+ `auth_ldap.ssl_options.cert`
+ `auth_ldap.ssl_options.client_renegotiation`
+ `auth_ldap.ssl_options.dh`
+ `auth_ldap.ssl_options.dhfile`
+ `auth_ldap.ssl_options.honor_cipher_order`
+ `auth_ldap.ssl_options.honor_ecc_order`
+ `auth_ldap.ssl_options.key.RSAPrivateKey`
+ `auth_ldap.ssl_options.key.DSAPrivateKey`
+ `auth_ldap.ssl_options.key.PrivateKeyInfo`
+ `auth_ldap.ssl_options.log_alert`
+ `auth_ldap.ssl_options.password`
+ `auth_ldap.ssl_options.psk_identity`
+ `auth_ldap.ssl_options.reuse_sessions`
+ `auth_ldap.ssl_options.secure_renegotiate`
+ `auth_ldap.ssl_options.versions.$version`
+ `auth_ldap.ssl_options.sni`

## Validasi tambahan untuk konfigurasi LDAP di Amazon MQ
<a name="ldap-additional-validations"></a>

Amazon MQ juga memberlakukan validasi tambahan berikut untuk otentikasi dan otorisasi LDAP:
+ `auth_ldap.log`tidak dapat diatur ke `network_unsafe`
+ Server LDAP harus menggunakan LDAPS. Entah `auth_ldap.use_ssl` atau `auth_ldap.use_starttls` harus diaktifkan secara eksplisit
+ Jika pengaturan apapun memerlukan penggunaan AWS ARN, `aws.arns.assume_role_arn` harus disediakan.
+ `auth_ldap.servers`harus berupa alamat IP yang valid atau FQDN yang valid
+ Kunci berikut harus berupa Nama Distinguished LDAP yang valid:
  + `auth_ldap.dn_lookup_base`
  + `auth_ldap.dn_lookup_bind.user_dn`
  + `auth_ldap.other_bind.user_dn`
  + `auth_ldap.group_lookup_base`

# Plugin
<a name="rabbitmq-basic-elements-plugins"></a>

Amazon MQ untuk RabbitMQ juga mendukung plugin berikut.
+ [Plugin manajemen RabbitMQ](#rabbitmq-management-plugin)
+ [Plugin sekop](#rabbitmq-shovel-plugin)
+ [Plugin Federasi](#rabbitmq-federation-plugin)
+ [Plugin pertukaran Hash yang konsisten](#rabbitmq-consistent-hash-exchange)
+ [OAuth Plugin 2](#rabbitmq-oauth-plugin)
+ [Plugin LDAP](#rabbitmq-ldap-plugin)
+ [Plugin HTTP](#rabbitmq-http-plugin)
+ [Plugin sertifikat SSL](#rabbitmq-ssl-plugin)
+ [plugin aws](#rabbitmq-aws-plugin)
+ [Plugin Pertukaran Topik JMS](#rabbitmq-jms-topic-exchange-plugin)

## Plugin manajemen RabbitMQ
<a name="rabbitmq-management-plugin"></a>

Amazon MQ untuk RabbitMQ mendukung [plugin manajemen RabbitMQ, yang menyediakan API manajemen](https://www.rabbitmq.com/management.html) berbasis HTTP bersama dengan UI berbasis browser untuk konsol web RabbitMQ. Anda dapat menggunakan konsol web dan API manajemen untuk membuat serta mengelola pengguna dan kebijakan broker.

## Plugin shovel
<a name="rabbitmq-shovel-plugin"></a>

Amazon MQ untuk RabbitMQ mendukung [plugin sekop RabbitMQ](https://www.rabbitmq.com/shovel.html), yang memungkinkan Anda memindahkan pesan dari antrian dan pertukaran pada satu broker ke broker lainnya. Anda dapat menggunakan shovel untuk menghubungkan broker dengan penggabungan longgar dan mendistribusikan pesan dari simpul dengan beban pesan yang lebih berat.

**penting**  
Anda tidak dapat mengonfigurasi sekop di antara antrian atau pertukaran jika tujuan sekop adalah broker pribadi.  
Amazon MQ tidak mendukung penggunaan shovel statis.

Hanya [sekop dinamis](https://www.rabbitmq.com/shovel-dynamic.html) yang didukung. Sekop dinamis dikonfigurasi menggunakan parameter runtime dan dapat dimulai dan dihentikan kapan saja secara terprogram oleh koneksi klien. Misalnya, menggunakan API manajemen RabbitMQ, Anda dapat membuat permintaan PUT ke titik akhir API berikut untuk mengonfigurasi sekop dinamis. Dalam contoh, \$1vhost\$1 dapat diganti dengan nama vhost broker, dan \$1name\$1 diganti dengan nama sekop dinamis baru.

```
/api/parameters/shovel/{vhost}/{name}
```

Dalam isi permintaan, Anda harus menentukan antrean atau pertukaran, tidak keduanya. Contoh di bawah ini mengonfigurasi sekop dinamis antara antrian lokal yang ditentukan dalam src-queue dan antrian jarak jauh yang ditentukan dalam dest-queue. Demikian pula, Anda dapat menggunakan parameter src-exchange dan dest-exchange untuk mengkonfigurasi sekop antara dua bursa.

```
{
"value": {
"src-protocol": "amqp091",
"src-uri": "amqp://localhost",
"src-queue": "source-queue-name",
"dest-protocol": "amqp091",
"dest-uri": "amqps://b-c8352341-ec91-4a78-ad9c-a43f23d325bb.mq.us-west2.amazonaws.com:5671",
"dest-queue": "destination-queue-name"
}
}
```

## Plugin federasi
<a name="rabbitmq-federation-plugin"></a>

[Amazon MQ mendukung pertukaran dan antrian federasi menggunakan plugin federasi RabbitMQ.](https://www.rabbitmq.com/federation.html) Dengan federasi, Anda dapat mereplikasi alur pesan antara antrean, pertukaran, dan konsumen pada broker terpisah. Antrian dan pertukaran federasi menggunakan point-to-point tautan untuk terhubung ke rekan-rekan di broker lain. Sedangkan pertukaran federasi, secara default, merutekan pesan satu kali, antrean federasi dapat memindahkan pesan beberapa kali sesuai kebutuhan konsumen.

Anda dapat menggunakan federasi untuk memungkinkan broker hilir mengonsumsi pesan dari pertukaran atau antrean di hulu. Anda dapat mengaktifkan federasi di broker hilir menggunakan konsol web RabbitMQ atau API manajemen.

**penting**  
Anda tidak dapat mengonfigurasi federasi jika antrian atau pertukaran hulu ada di broker pribadi. Anda hanya dapat mengkonfigurasi federasi antara antrian atau pertukaran di pialang publik, atau antara antrian hulu atau pertukaran di broker publik, dan antrian hilir atau pertukaran di broker swasta.

Misalnya, menggunakan API manajemen, Anda dapat mengonfigurasi federasi dengan melakukan hal berikut.
+ Mengonfigurasi satu atau lebih hulu yang menentukan koneksi federasi ke simpul lain. Anda dapat menentukan koneksi federasi menggunakan konsol web RabbitMQ atau API manajemen. Menggunakan API manajemen, Anda dapat membuat permintaan POST ke/api/parameters/federation-upstream/%2f/myupstreamdengan badan permintaan berikut.

  ```
  {"value":{"uri":"amqp://server-name","expires":3600000}}
  ```
+ Konfigurasikan kebijakan untuk mengaktifkan antrean atau pertukaran agar menjadi federasi. Anda dapat mengonfigurasi kebijakan menggunakan konsol web RabbitMQ atau API manajemen. Menggunakan API manajemen, Anda dapat membuat permintaan POST ke/api/policies/%2f/federate-me dengan badan permintaan berikut.

  ```
  {"pattern":"^amq\.", "definition":{"federation-upstream-set":"all"}, "apply-to":"exchanges"}
  ```
**catatan**  
Badan permintaan mengasumsikan pertukaran di server diberi nama dimulai dengan amq. Menggunakan ekspresi reguler ^amq\$1. akan memastikan bahwa federasi diaktifkan untuk semua bursa yang namanya dimulai dengan “amq.” Pertukaran di server RabbitMQ Anda dapat diberikan nama yang berbeda.

## Plugin pertukaran Hash yang konsisten
<a name="rabbitmq-consistent-hash-exchange"></a>

Amazon MQ untuk RabbitMQ mendukung plugin RabbitMQ Consistent Hash Exchange [Type](https://github.com/rabbitmq/rabbitmq-consistent-hash-exchange). Pertukaran Hash yang konsisten merutekan pesan ke antrian berdasarkan nilai hash yang dihitung dari kunci perutean pesan. Mengingat kunci routing yang cukup merata, pertukaran Hash Konsisten dapat mendistribusikan pesan antar antrian secara merata.

Untuk antrian yang terikat pada pertukaran Hash Konsisten, kunci pengikatan adalah kunci number-as-a-string yang menentukan bobot pengikatan setiap antrian. Antrian dengan bobot pengikatan yang lebih tinggi akan menerima distribusi pesan yang lebih tinggi secara proporsional dari pertukaran Hash Konsisten yang terikat. Dalam topologi pertukaran Hash Konsisten, penerbit dapat dengan mudah mempublikasikan pesan ke bursa, tetapi konsumen harus dikonfigurasi secara eksplisit untuk mengkonsumsi pesan dari antrian tertentu.

## OAuth Plugin 2.0
<a name="rabbitmq-oauth-plugin"></a>

[Amazon MQ untuk RabbitMQ mendukung plugin backend otentikasi 2. OAuth ](https://github.com/rabbitmq/rabbitmq-auth-backend-oauth2) Plugin ini diaktifkan secara kondisional berdasarkan konfigurasi broker Anda. Ketika diaktifkan, plugin ini menyediakan otentikasi dan otorisasi OAuth 2.0 dengan integrasi ke penyedia identitas OAuth 2.0 eksternal untuk manajemen pengguna terpusat dan kontrol akses. Untuk informasi selengkapnya tentang otentikasi OAuth 2.0, lihat[OAuth 2.0 otentikasi dan otorisasi](oauth-for-amq-for-rabbitmq.md).

## Plugin LDAP
<a name="rabbitmq-ldap-plugin"></a>

[Amazon MQ untuk RabbitMQ mendukung plugin backend otentikasi LDAP.](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap) Plugin ini diaktifkan secara kondisional berdasarkan konfigurasi broker Anda. Ketika diaktifkan, plugin ini menyediakan otentikasi dan otorisasi LDAP dengan integrasi ke layanan direktori LDAP eksternal untuk otentikasi dan otorisasi pengguna terpusat. Untuk informasi selengkapnya tentang otentikasi LDAP, lihat. [Otentikasi dan otorisasi LDAP](ldap-for-amq-for-rabbitmq.md)

## Plugin HTTP
<a name="rabbitmq-http-plugin"></a>

[Amazon MQ untuk RabbitMQ mendukung plugin backend otentikasi HTTP.](https://github.com/rabbitmq/rabbitmq-auth-backend-http) Plugin ini diaktifkan secara kondisional berdasarkan konfigurasi broker Anda. Ketika diaktifkan, plugin ini menyediakan otentikasi HTTP dan otorisasi dengan integrasi ke server HTTP eksternal untuk otentikasi dan otorisasi pengguna terpusat. Untuk informasi selengkapnya tentang otentikasi HTTP, lihat[Otentikasi dan otorisasi HTTP](http-for-amq-for-rabbitmq.md).

**catatan**  
Plugin otentikasi HTTP hanya tersedia untuk Amazon MQ untuk RabbitMQ versi 4 ke atas.

## Plugin sertifikat SSL
<a name="rabbitmq-ssl-plugin"></a>

Amazon MQ mendukung TLS bersama (MTLS) untuk broker RabbitMQ. [Plugin otentikasi SSL](https://github.com/rabbitmq/rabbitmq-auth-mechanism-ssl) menggunakan sertifikat klien dari koneksi mTLS untuk mengautentikasi pengguna. Plugin ini diaktifkan secara kondisional berdasarkan konfigurasi broker Anda. Saat diaktifkan, ia menyediakan otentikasi berbasis sertifikat menggunakan sertifikat klien X.509 untuk otentikasi yang kuat tanpa mengirimkan kredensyal melalui jaringan. Untuk informasi selengkapnya tentang otentikasi sertifikat SSL, lihat. [Otentikasi sertifikat SSL](ssl-for-amq-for-rabbitmq.md)

**catatan**  
Plugin otentikasi sertifikat SSL hanya tersedia untuk Amazon MQ untuk RabbitMQ versi 4 ke atas.

## plugin aws
<a name="rabbitmq-aws-plugin"></a>

[Plugin aws](https://github.com/rabbitmq/rabbitmq-aws) diaktifkan secara kondisional oleh Amazon MQ untuk RabbitMQ berdasarkan konfigurasi broker Anda. Plugin komunitas ini, dikembangkan dan dikelola oleh Amazon MQ, menyediakan pengambilan kredensi dan sertifikat yang aman dari AWS layanan yang digunakan AWS ARNs dalam pengaturan konfigurasi RabbitMQ. Untuk informasi lebih lanjut tentang dukungan ARN, lihat. [Dukungan ARN dalam konfigurasi RabbitMQ](arn-support-rabbitmq-configuration.md)

## Plugin Pertukaran Topik JMS
<a name="rabbitmq-jms-topic-exchange-plugin"></a>

[Plugin Pertukaran Topik JMS](https://github.com/rabbitmq/rabbitmq-server/tree/main/deps/rabbitmq_jms_topic_exchange) selalu diaktifkan oleh Amazon MQ untuk RabbitMQ. Ia bekerja dengan [klien RabbitMQ JMS untuk memungkinkan aplikasi JMS](https://github.com/rabbitmq/rabbitmq-jms-client) baru dan yang sudah ada terhubung ke Amazon MQ untuk RabbitMQ.

**catatan**  
Plugin JMS Topic Exchange hanya tersedia untuk Amazon MQ untuk RabbitMQ versi 4 ke atas. Ini diaktifkan secara default tetapi hanya mengaktifkan ketika klien RabbitMQ JMS digunakan untuk menjalankan beban kerja JMS.

# Protokol yang didukung
<a name="rabbitmq-supported-protocols"></a>

Anda dapat mengakses broker RabbitMQ Anda dengan menggunakan [bahasa pemrograman apa pun yang didukung RabbitMQ](https://www.rabbitmq.com/client-libraries/devtools) dan dengan mengaktifkan TLS untuk salah satu spesifikasi protokol berikut:
+ [AMQP (0-9-1)](https://www.rabbitmq.com/docs/extensions)
+ [AMQP 1.0](https://www.rabbitmq.com/docs/amqp)
+ [JMS 1.1](https://www.rabbitmq.com/client-libraries/jms-client)
+ [JMS 2.0](https://www.rabbitmq.com/client-libraries/jms-client)
+ [JMS 3.1](https://www.rabbitmq.com/client-libraries/jms-client)

# Amazon MQ untuk dukungan RabbitMQ JMS
<a name="rabbitmq-jms-support"></a>

Anda sekarang dapat menjalankan beban kerja JMS 1.1, 2.0, dan 3.1 di Amazon MQ untuk RabbitMQ 4 dengan klien RabbitMQ JMS.

## Klien RabbitMQ JMS
<a name="rabbitmq-jms-client"></a>

 Klien RabbitMQ JMS adalah pustaka klien JMS open-source yang Anda perlukan untuk menghubungkan aplikasi JMS Anda ke broker Amazon MQ RabbitMQ. Untuk informasi lebih lanjut, silakan kunjungi [ GitHub repositori resmi](https://github.com/rabbitmq/rabbitmq-jms-client). 

## Didukung JMS 1.1, 2.0 dan 3.1 APIs
<a name="jms-topic-exchange-plugin"></a>

 Dari Amazon MQ untuk RabbitMQ 4 dan seterusnya, plugin selalu diaktifkan. `jms-topic-exchange` Oleh karena itu, Anda dapat menggunakan Amazon MQ untuk klien RabbitMQ 4 dan RabbitMQ JMS untuk beban kerja JMS Anda. Semua JMS APIs didefinisikan dalam [JMS 1.1](https://javaee.github.io/jms-spec/pages/JMS20FinalRelease#reference-implementation) didukung kecuali: 
+ Sesi APIs server tidak didukung.
+ Transaksi XA APIs tidak didukung.
+ Pemilih JMS untuk tujuan Antrian JMS tidak didukung.
+ Atribut `NoLocal` langganan JMS tidak didukung.

Semua yang baru ditambahkan APIs di [JMS 2.0 dan JMS 3.1](https://javaee.github.io/jms-spec/pages/JMS20FinalRelease#reference-implementation) didukung kecuali:
+ `JMSProducer.setDeliveryDelay`API tidak didukung.

Untuk mempelajari lebih lanjut tentang menghubungkan aplikasi JMS Anda ke Amazon MQ untuk broker RabbitMQ, silakan lihat tutorial tentang [Menghubungkan aplikasi JMS Anda ke Amazon MQ untuk](rabbitmq-tutorial-jms.md) broker RabbitMQ

## Autentikasi dan Otorisasi
<a name="jms-authentication-authorization"></a>

 Semua mekanisme otentikasi dan otorisasi yang tercantum dalam [bagian ini didukung](rabbitmq-authentication.md). Kredensi yang digunakan untuk menghubungkan ke broker menggunakan klien JMS sama seperti jika Anda terhubung ke broker RabbitMQ menggunakan klien AMQP Java. 

## Interoperabilitas dengan antrian AMQP di RabbitMQ
<a name="jms-amqp-interoperability"></a>

 Anda dapat menggunakan klien RabbitMQ JMS untuk mengirim pesan JMS ke pertukaran AMQP dan menggunakan pesan dari antrian AMQP (fitur ini tidak mendukung topik JMS). Ini memungkinkan Anda untuk menginteroperasikan atau memigrasikan beban kerja JMS tertentu ke beban kerja AMQP. Untuk informasi lebih lanjut, silakan kunjungi [dokumentasi klien resmi](https://rabbitmq.github.io/rabbitmq-jms-client/2.x/stable/htmlsingle/index.html#destination-interoperability). 

# Menerapkan kebijakan ke Amazon MQ untuk RabbitMQ
<a name="rabbitmq-defaults-applying-policies"></a>

 Anda dapat menerapkan kebijakan dan batasan khusus dengan nilai default yang direkomendasikan Amazon MQ. Jika Anda telah menghapus kebijakan default dan batas yang direkomendasikan, lalu ingin membuat ulang kebijkan dan batas, atau Anda telah membuat vhost tambahan dan ingin menerapkan kebijakan default dan batas ke vhosts baru, Anda dapat menggunakan langkah-langkah berikut. 

**penting**  
 Di Amazon MQ untuk mesin RabbitMQ versi 3.13 dan di bawahnya, kebijakan operator default saat ini adalah:   

```
vhost name pattern apply-to definition priority/ default_operator_policy_AWS_managed .* classic_queues {"ha-mode":"all","ha-sync-mode":"automatic","queue-version":2} 0
```
 Pada versi 4.0 dan di atasnya, kebijakan operator default telah berubah menjadi:   

```
vhost name pattern apply-to definition priority/ default_operator_policy_AWS_managed .* classic_queues {"queue-version":2} 0
```
 Perubahan ini diperlukan karena pencerminan antrian klasik dan pengaturan kebijakan HA tidak didukung di RabbitMQ 4.   
 Anda tidak dapat membuat kebijakan yang berlaku untuk antrian cermin klasik dan antrian kuorum. Jika Anda ingin kebijakan Anda hanya berlaku untuk antrian kuorum, Anda harus menyetel ke. `--apply-to` `quorum_queues` Jika Anda menggunakan antrian cermin klasik dan antrian kuorum, Anda harus membuat kebijakan terpisah dengan `--apply-to:classic_queues` serta kebijakan antrian kuorum. 

**penting**  
 Untuk melakukan langkah-langkah berikut, Anda harus memiliki pengguna broker Amazon MQ for RabbitMQ dengan izin administrator. Anda dapat menggunakan pengguna administrator yang dibuat ketika pertama kali membuat broker, atau pengguna lain yang mungkin telah Anda buat sesudahnya. Tabel berikut menyediakan tanda pengguna administrator yang diperlukan dan izin sebagai pola ekspresi reguler (regexp).   


| Tanda | Baca regexp | Konfigurasikan regexp | Tulis regexp | 
| --- | --- | --- | --- | 
| administrator | .\$1 | .\$1 | .\$1 | 
Untuk informasi selengkapnya tentang cara membuat pengguna RabbitMQ serta mengelola tanda dan izin pengguna, lihat [Amazon MQ untuk pengguna broker RabbitMQ](rabbitmq-simple-auth-broker-users.md#rabbitmq-basic-elements-user).

**Untuk menerapkan kebijakan default dan batas host virtual menggunakan konsol web RabbitMQ**

1. Masuk ke [konsol Amazon MQ](https://console.aws.amazon.com/amazon-mq/).

1. Di panel navigasi kiri, pilih **Broker**.

1. Dari daftar broker, pilih nama broker yang ingin Anda terapkan kebijakan baru.

1. Di halaman detail broker, pada bagian **Koneksi**, pilih URL **konsol web RabbitMQ**. Konsol web RabbitMQ terbuka di tab browser atau jendela baru.

1. Login ke konsol web RabbitMQ dengan nama pengguna dan kata sandi administrator broker Anda.

1. Di konsol web RabbitMQ, di bagian atas halaman, pilih **Admin**.

1. Di halaman **Admin**, di panel navigasi kanan, pilih **Kebijakan**.

1. Di halaman **Kebijakan**, Anda dapat melihat daftar **Kebijakan pengguna** broker saat ini. Di bawah **Kebijakan pengguna**, perluas **Tambahkan / perbarui kebijakan**.

1. Untuk membuat kebijakan broker baru, di bawah **Tambahkan / perbarui kebijakan**, lakukan hal berikut:

   1. Untuk **Host virtual**, pilih nama vhost yang ingin dilampirkan kebijakan dari daftar dropdown. Untuk memilih vhost default, pilih **/**.
**catatan**  
Jika Anda belum membuat vhost tambahan, opsi **Host virtual** tidak ditampilkan pada konsol RabbitMQ, dan kebijakan diterapkan hanya untuk vhost default.

   1. Untuk **Nama**, masukkan nama kebijakan Anda, misalnya **policy-defaults**.

   1. Untuk **Pola**, masukkan pola regexp **.\$1** sehingga kebijakan cocok dengan semua antrean pada broker.

   1. Untuk **Terapkan ke**, pilih **Pertukaran dan antrean** dari daftar dropdown.

   1. Untuk **Prioritas**, masukkan bilangan bulat yang lebih besar dari semua kebijakan lain yang diterapkan ke vhost. Anda dapat menerapkan satu set definisi kebijakan ke antrean dan pertukaran RabbitMQ pada waktu tertentu. RabbitMQ memilih kebijakan yang cocok dengan nilai prioritas tertinggi. Untuk informasi selengkapnya tentang prioritas kebijakan dan cara menggabungkan kebijakan, lihat [Kebijakan](https://www.rabbitmq.com/parameters.html#policies) dalam Dokumentasi Server RabbitMQ.

   1. Untuk **Definisi**, tambahkan pasangan nilai kunci berikut:
      + **queue-mode**=**lazy**. Pilih **String** dari daftar dropdown.
      + **overflow**=**reject-publish**. Pilih **String** dari daftar dropdown.
**catatan**  
Tidak berlaku untuk broker instans tunggal.
      + **max-length**=***number-of-messages***. Ganti *number-of-messages* dengan [nilai yang direkomendasikan Amazon MQ](rabbitmq-defaults.md#rabbitmq-defaults-values) sesuai dengan ukuran instans dan mode penerapan broker, misalnya, **8000000** untuk klaster. `mq.m7g.large` Pilih **Nomor** dari daftar dropdown.
**catatan**  
Tidak berlaku untuk broker instans tunggal.

   1. Pilih **Buat / perbarui kebijakan**.

1. Konfirmasi bahwa kebijakan baru muncul dalam daftar **Kebijakan pengguna**.
**catatan**  
Untuk broker klaster, Amazon MQ secara otomatis menerapkan definisi kebijakan `ha-mode: all` dan `ha-sync-mode: automatic`.

1. Dari panel navigasi kanan, pilih **Batas**.

1. Di halaman **Batas**, Anda dapat melihat daftar **Batas host virtual** broker saat ini. Di bawah **Batas host virtual**, perluas **Atur / perbarui batas host virtual**.

1. Untuk membuat batas vhost baru, di bawah **Atur / perbarui batas host virtual**, lakukan hal berikut:

   1. Untuk **Host virtual**, pilih nama vhost yang ingin dilampirkan kebijakan dari daftar dropdown. Untuk memilih vhost default, pilih **/**.

   1. Untuk **Batas**, pilih **max-connections** dari opsi dropdown.

   1. Untuk **Nilai**, masukkan [nilai yang direkomendasikan Amazon MQ](rabbitmq-defaults.md#rabbitmq-defaults-values) sesuai dengan ukuran instans broker dan mode deployment, misalnya, **15000** untuk klaster `mq.m5.large`.

   1. Pilih **Atur / perbarui batas**.

   1. Ulangi langkah di atas, dan untuk **Batas**, pilih **max-queues** dari opsi dropdown.

1. Konfirmasikan bahwa batas baru muncul dalam daftar **Batas host virtual**.

**Untuk menerapkan kebijakan default dan batas host virtual menggunakan API manajemen RabbitMQ**

1. Masuk ke [konsol Amazon MQ](https://console.aws.amazon.com/amazon-mq/).

1. Di panel navigasi kiri, pilih **Broker**.

1. Dari daftar broker, pilih nama broker yang ingin Anda terapkan kebijakan baru.

1. Di halaman broker, pada bagian **Koneksi**, catat URL **konsol web RabbitMQ**. Ini adalah titik akhir broker yang Anda gunakan dalam permintaan HTTP.

1. Buka terminal atau jendela baris perintah baru pilihan Anda.

1. Untuk membuat kebijakan broker baru, masukkan perintah `curl` baru. Perintah ini mengasumsikan antrean pada vhost `/` default, yang dienkode sebagai `%2F`. Untuk menerapkan kebijakan ke vhost lain, ganti `%2F` dengan nama vhost.
**catatan**  
Ganti *username* dan *password* dengan kredenal masuk administrator Anda. Ganti *number-of-messages* dengan [nilai yang direkomendasikan Amazon MQ](rabbitmq-defaults.md#rabbitmq-defaults-values) sesuai dengan ukuran instans dan mode penerapan broker. Ganti *policy-name* dengan nama untuk kebijakan Anda. Ganti *broker-endpoint* dengan URL yang Anda catat sebelumnya.

   ```
   curl -i -u username:password -H "content-type:application/json" -XPUT \
   -d '{"pattern":".*", "priority":1, "definition":{"queue-mode":lazy, "overflow":"reject-publish", "max-length":"number-of-messages"}}' \
   broker-endpoint/api/policies/%2F/policy-name
   ```

1. Untuk mengonfirmasi bahwa kebijakan baru ditambahkan ke kebijakan pengguna broker, masukkan perintah `curl` berikut untuk daftar seluruh kebijakan broker.

   ```
   curl -i -u username:password broker-endpoint/api/policies
   ```

1. Untuk membuat batas host virtual `max-connections` yang baru, masukkan perintah `curl` berikut. Perintah ini mengasumsikan antrean pada vhost `/` default, yang dienkode sebagai `%2F`. Untuk menerapkan kebijakan ke vhost lain, ganti `%2F` dengan nama vhost.
**catatan**  
Ganti *username* dan *password* dengan kredenal masuk administrator Anda. Ganti *max-connections* dengan [nilai yang direkomendasikan Amazon MQ](rabbitmq-defaults.md#rabbitmq-defaults-values) sesuai dengan ukuran instans dan mode penerapan broker. Mengganti titik akhir broker dengan URL yang Anda catat sebelumnya.

   ```
   curl -i -u username:password -H "content-type:application/json" -XPUT \
   -d '{"value":"number-of-connections"}' \
   broker-endpoint/api/vhost-limits/%2F/max-connections
   ```

1. Untuk membuat batas host virtual `max-queues`, ulangi langkah sebelumnya, tetapi modifikasi perintah curl seperti yang ditampilkan berikut ini.

   ```
   curl -i -u username:password -H "content-type:application/json" -XPUT \
   -d '{"value":"number-of-queues"}' \
   broker-endpoint/api/vhost-limits/%2F/max-queues
   ```

1. Untuk mengonfirmasi bahwa batas baru ditambahkan ke batas host virtual broker Anda, masukkan perintah `curl` berikut untuk memuat daftar semua batas host virtual broker.

   ```
   curl -i -u username:password broker-endpoint/api/vhost-limits
   ```

# Antrian kuorum untuk RabbitMQ di Amazon MQ
<a name="quorum-queues"></a>

 Antrian kuorum adalah jenis antrian yang direplikasi yang terdiri dari pemimpin (replika utama) dan pengikut (replika lainnya). Jika pemimpin menjadi tidak tersedia, antrian kuorum menggunakan algoritma konsensus [Raft](https://raft.github.io/) untuk memilih node pemimpin baru dengan mayoritas suara, dan pemimpin sebelumnya diturunkan ke node pengikut di cluster yang sama. Pengikut yang tersisa terus mereplikasi seperti sebelumnya. Karena setiap node berada di zona ketersediaan yang berbeda, jika satu node sementara tidak tersedia, pengiriman pesan berlanjut dengan replika pemimpin yang baru dipilih di zona ketersediaan lain. 

 Antrian kuorum berguna untuk menangani pesan racun, yang terjadi ketika pesan gagal dan diminta ulang beberapa kali. 

Anda tidak boleh menggunakan antrian kuorum jika Anda:
+  gunakan antrian sementara 
+  memiliki backlog antrian panjang 
+  memprioritaskan latensi rendah 

 Untuk mendeklarasikan antrian kuorum, atur header ke. `x-queue-type` `quorum` 

**Topics**
+ [Bermigrasi dari antrian klasik ke antrian kuorum di Amazon MQ untuk RabbitMQ](quorum-queues-migration.md)
+ [Konfigurasi kebijakan untuk antrian kuorum untuk Amazon MQ untuk RabbitMQ](quorum-queues-policy-configurations.md)
+ [Praktik terbaik untuk antrian kuorum untuk Amazon MQ untuk RabbitMQ](quorum-queues-best-practices.md)

# Bermigrasi dari antrian klasik ke antrian kuorum di Amazon MQ untuk RabbitMQ
<a name="quorum-queues-migration"></a>

Anda dapat memigrasikan antrian cermin klasik Anda ke antrian kuorum di broker Amazon MQ pada versi 3.13 atau lebih tinggi dengan membuat host virtual baru di cluster yang sama, atau dengan bermigrasi di tempat. 

## Opsi 1: Bermigrasi dari antrian cermin klasik ke antrian kuorum dengan host virtual baru
<a name="migrating-quorum-queues-with-vhost"></a>

 Anda dapat memigrasikan antrian cermin klasik Anda ke antrian kuorum di broker Amazon MQ pada versi 3.13 atau lebih tinggi dengan membuat host virtual baru di cluster yang sama. 

1. Di cluster Anda yang ada, buat host virtual baru (vhost) dengan tipe antrian default sebagai kuorum.

1. Buat [Plugin federasi](rabbitmq-basic-elements-plugins.md#rabbitmq-federation-plugin) dari vhost baru dengan URI menunjuk ke vhost lama menggunakan antrian cermin klasik.

1. Menggunakan`rabbitmqadmin`, ekspor definisi dari vhost lama ke file baru. Anda harus membuat perubahan pada file skema sehingga kompatibel dengan antrian kuorum. Untuk daftar lengkap perubahan yang perlu Anda buat pada file, lihat [Memindahkan definisi](https://www.rabbitmq.com/blog/2023/03/02/quorum-queues-migration#moving-definitions) dalam dokumentasi antrian kuorum RabbitMQ. Setelah menerapkan perubahan yang diperlukan pada file, impor ulang definisi ke vhost baru. 

1.  Buat kebijakan baru di vhost baru. Untuk rekomendasi tentang konfigurasi kebijakan Amazon MQ untuk antrian kuorum, lihat. [Konfigurasi kebijakan untuk antrian kuorum untuk Amazon MQ untuk RabbitMQ](quorum-queues-policy-configurations.md) Kemudian, mulai Federasi yang Anda buat sebelumnya dari vhost lama ke vhost baru. 

1.  Arahkan konsumen dan produsen ke vhost baru.

1. Konfigurasikan steker Sekop untuk memindahkan pesan yang tersisa. Setelah antrian kosong, hapus Shovel.

## Bermigrasi dari antrian cermin klasik ke antrian kuorum di tempat
<a name="migrating-quorum-queues-in-place"></a>

 Anda dapat memigrasikan antrian cermin klasik Anda ke antrian kuorum di broker Amazon MQ pada versi 3.13 atau lebih tinggi dengan bermigrasi di tempat. 

1. Hentikan konsumen dan produsen.

1. Buat antrean kuorum sementara baru.

1. Konfigurasikan plug in Shovel untuk memindahkan pesan apa pun dari antrian cermin klasik lama ke antrian kuorum sementara yang baru. Setelah semua pesan dipindahkan ke antrian kuorum sementara, hapus Sekop.

1. Hapus antrian cermin klasik sumber. Kemudian, buat ulang antrian kuorum dengan nama dan binding yang sama dengan antrian cermin klasik sumber.

1. Buat Shovel baru untuk memindahkan pesan dari antrean kuorum sementara ke antrean kuorum baru.

# Konfigurasi kebijakan untuk antrian kuorum untuk Amazon MQ untuk RabbitMQ
<a name="quorum-queues-policy-configurations"></a>

Anda dapat menambahkan konfigurasi kebijakan tertentu ke antrian kuorum untuk broker RabbitMQ Anda di Amazon MQ.

 Saat Anda membuat kebijakan untuk antrian kuorum, Anda harus melakukan hal berikut: 
+ Hapus semua atribut kebijakan yang dimulai dengan`ha`, seperti`ha-mode`,`ha-params`,`ha-sync-mode`,`ha-sync-batch-size`,`ha-promote-on-shutdown`, dan`ha-promote-on-failure`. 
+ Hapus `queue-mode`.
+  Ubah overflow saat disetel ke `reject-publish-dlx` 

**penting**  
 Amazon MQ untuk RabbitMQ menerapkan semua atau tidak ada atribut dalam kebijakan. Anda tidak dapat membuat kebijakan yang berlaku untuk antrian cermin klasik dan antrian kuorum. Jika Anda ingin kebijakan Anda hanya berlaku untuk antrian kuorum, Anda harus menyetel ke. `--apply-to` `quorum_queues` Jika Anda menggunakan antrian cermin klasik dan antrian kuorum, Anda harus membuat kebijakan terpisah dengan`--apply-to`: `classic_queues` serta kebijakan antrian kuorum. 

Anda tidak perlu mengubah `AWS-DEFAULT` kebijakan karena kebijakan tersebut secara otomatis mengadopsi jenis antrian baru di parameter “berlaku untuk”. Untuk informasi selengkapnya tentang kebijakan default Amazon MQ untuk RabbitMQ, lihat. [Mengkonfigurasi kebijakan operator](configurable-values.md#configuring-operator-policies) 

# Praktik terbaik untuk antrian kuorum untuk Amazon MQ untuk RabbitMQ
<a name="quorum-queues-best-practices"></a>

Sebaiknya gunakan praktik terbaik berikut untuk meningkatkan kinerja saat bekerja dengan antrian kuorum.

## Menangani pesan racun dengan menetapkan batas pengiriman
<a name="using-quorum-queues-delivery-limit"></a>

 Pesan racun terjadi ketika pesan gagal dan dikirim ulang beberapa kali. Anda dapat menetapkan batas pengiriman pesan menggunakan argumen `delivery-limit` kebijakan untuk menghapus pesan yang dikirim ulang beberapa kali. Jika pesan dikirim ulang lebih dari batas pengiriman yang diizinkan, pesan tersebut kemudian dihapus dan dihapus oleh RabbitMQ. Saat Anda menetapkan batas pengiriman, pesan akan diminta ulang di dekat kepala antrian. 

## Prioritas pesan untuk antrian kuorum
<a name="quorum-queues-message-priority"></a>

 Antrian kuorum tidak memiliki prioritas pesan. Jika Anda membutuhkan prioritas pesan, Anda harus membuat beberapa antrian kuorum. Untuk informasi selengkapnya tentang memprioritaskan pesan dengan beberapa antrian kuorum, lihat Prioritas [pesan](https://www.rabbitmq.com/docs/quorum-queues#priorities) dalam dokumentasi RabbitMQ. 

## Menggunakan faktor replikasi default
<a name="using-quorum-queues-replication-factor"></a>

 Amazon MQ untuk RabbitMQ default ke faktor replikasi tiga (3) node untuk broker klaster menggunakan antrian kuorum. Jika Anda membuat perubahan`x-quorum-initial-group-size`, Amazon MQ akan default lagi ke faktor replikasi 3. 

# Amazon MQ untuk praktik terbaik RabbitMQ
<a name="best-practices-rabbitmq"></a>

Ikuti pedoman kesiapan produksi ini untuk memaksimalkan kinerja broker dan mengoptimalkan efisiensi throughput pesan saat bekerja dengan Amazon MQ untuk broker RabbitMQ.

**penting**  
Saat ini, Amazon MQ tidak mendukung [aliran](https://www.rabbitmq.com/streams.html), atau menggunakan logging terstruktur di JSON, diperkenalkan di RabbitMQ 3.9.x.

**Topics**
+ [Praktik terbaik untuk pengaturan broker dan manajemen koneksi di Amazon MQ untuk RabbitMQ](best-practices-broker-setup.md)
+ [Praktik terbaik untuk daya tahan dan keandalan pesan di Amazon MQ untuk RabbitMQ](best-practices-message-reliability.md)
+ [Praktik terbaik untuk pengoptimalan kinerja dan efisiensi di Amazon MQ untuk RabbitMQ](best-practices-performance.md)
+ [Praktik terbaik untuk ketahanan dan pemantauan jaringan di Amazon MQ untuk RabbitMQ](best-practices-network-resilience.md)

# Praktik terbaik untuk pengaturan broker dan manajemen koneksi di Amazon MQ untuk RabbitMQ
<a name="best-practices-broker-setup"></a>

 Pengaturan broker dan manajemen koneksi adalah langkah pertama dalam mencegah masalah dengan throughput pesan broker, pemanfaatan sumber daya, dan kemampuan untuk menangani beban kerja produksi. Saat [membuat dan mengonfigurasi Amazon MQ untuk broker RabbitMQ](getting-started-rabbitmq.md#create-rabbitmq-broker), selesaikan praktik terbaik berikut untuk memilih jenis instans yang sesuai, mengelola koneksi secara efisien, dan mengonfigurasi pra-pengambilan pesan untuk memaksimalkan kinerja broker Anda. 

**penting**  
Amazon MQ untuk RabbitMQ tidak mendukung nama pengguna “tamu”, dan akan menghapus akun tamu default saat Anda membuat broker baru. Amazon MQ juga akan secara berkala menghapus akun yang dibuat pelanggan yang disebut “tamu”.

## Langkah 1: Gunakan penerapan cluster
<a name="use-cluster-deployments-for-high-availability"></a>

 Untuk beban kerja produksi, sebaiknya gunakan penerapan klaster alih-alih pialang instans tunggal untuk memastikan ketersediaan dan ketahanan pesan yang tinggi. Penerapan cluster menghapus satu titik kegagalan dan memberikan toleransi kesalahan yang lebih baik. 

 Penerapan cluster terdiri dari tiga node broker RabbitMQ yang didistribusikan di tiga Availability Zone, menyediakan failover otomatis dan memastikan operasi berlanjut bahkan jika seluruh Availability Zone menjadi tidak tersedia. Amazon MQ secara otomatis mereplikasi pesan di semua node untuk memastikan ketersediaan selama kegagalan atau pemeliharaan node. 

 Penerapan klaster sangat penting untuk lingkungan produksi dan didukung oleh Perjanjian Tingkat Layanan [Amazon MQ](https://aws.amazon.com/amazon-mq/sla/). 

 Untuk informasi selengkapnya, lihat [Penerapan klaster di Amazon MQ untuk RabbitMQ](rabbitmq-broker-architecture.md#rabbitmq-broker-architecture-cluster). 

## Langkah 2: Pilih jenis instans broker yang benar
<a name="choose-broker-instance-type"></a>

 Throughput pesan dari jenis instans broker tergantung pada kasus penggunaan aplikasi Anda. `M7g.medium`seharusnya hanya digunakan untuk menguji kinerja aplikasi. Menggunakan instance yang lebih kecil ini sebelum menggunakan instance yang lebih besar dalam produksi dapat meningkatkan kinerja aplikasi. Pada jenis instans `m7g.large` dan di atasnya, Anda dapat menggunakan penerapan klaster untuk ketersediaan tinggi dan daya tahan pesan. Jenis instans broker yang lebih besar dapat menangani tingkat produksi klien dan antrian, throughput tinggi, pesan dalam memori, dan pesan yang berlebihan. 

 Untuk informasi selengkapnya tentang memilih jenis instans yang benar, lihat [Pedoman ukuran di Amazon MQ for RabbitMQ](rabbitmq-sizing-guidelines.md). 

## Langkah 3: Gunakan antrian kuorum
<a name="use-quorum-queues"></a>

 Antrian kuorum, dengan penerapan klaster, harus menjadi pilihan default untuk jenis antrian yang direplikasi di lingkungan produksi untuk broker RabbitMQ pada 3.13 ke atas. Antrian kuorum adalah tipe antrian modern yang direplikasi yang memberikan keandalan tinggi, throughput tinggi, dan latensi stabil. 

 Antrian kuorum menggunakan algoritma konsensus Raft untuk memberikan toleransi kesalahan yang lebih baik. Ketika node pemimpin menjadi tidak tersedia, antrian kuorum secara otomatis memilih pemimpin baru dengan suara mayoritas, memastikan pengiriman pesan berlanjut dengan gangguan minimal. Karena setiap node berada di Availability Zone yang berbeda, sistem pesan Anda tetap tersedia meskipun seluruh Availability Zone menjadi tidak tersedia untuk sementara. 

 Untuk mendeklarasikan antrian kuorum, atur header saat membuat antrian `x-queue-type` Anda`quorum`. 

 Untuk informasi selengkapnya tentang antrian kuorum, termasuk strategi migrasi dan praktik terbaik, lihat Antrian [kuorum di Amazon MQ untuk RabbitMQ.](quorum-queues.md) 

## Langkah 4: Gunakan beberapa saluran
<a name="use-multiple-channels"></a>

 Untuk menghindari churn koneksi, gunakan beberapa saluran melalui satu koneksi. Aplikasi harus menghindari rasio koneksi 1:1 ke saluran. Kami merekomendasikan menggunakan satu koneksi untuk setiap proses, dan kemudian satu saluran untuk setiap utas. Hindari penggunaan saluran yang berlebihan untuk mencegah kebocoran saluran. 

# Praktik terbaik untuk daya tahan dan keandalan pesan di Amazon MQ untuk RabbitMQ
<a name="best-practices-message-reliability"></a>

 Sebelum memindahkan aplikasi Anda ke produksi, selesaikan praktik terbaik berikut untuk mencegah kehilangan pesan dan pemanfaatan sumber daya yang berlebihan. 

## Langkah 1: Gunakan pesan persisten dan antrian yang tahan lama
<a name="use-persistent-messages-durable-queues"></a>

 Pesan persisten dapat membantu melindungi daya tahan data dalam situasi di mana broker crash atau restart. Pesan persisten ditulis ke disk segera setelah pesan tiba. Tidak seperti antrean malas, pesan persisten di-cache dalam memori dan disk, kecuali lebih banyak memori diperlukan oleh broker. Dalam kasus ketika lebih banyak memori diperlukan, pesan dihapus dari memori oleh mekanisme broker RabbitMQ yang mengelola penyimpanan pesan ke disk, sering disebut sebagai *lapisan persisten*. 

Untuk mengaktifkan persistensi pesan, Anda dapat menyatakan antrean sebagai `durable` dan mengatur mode pengiriman pesan ke `persistent`. Contoh berikut mendemonstrasikan penggunaan [pustaka klien RabbitMQ Java](https://www.rabbitmq.com/java-client.html) untuk mendeklarasikan antrean yang tahan lama. Saat bekerja dengan AMQP 0-9-1, Anda dapat menandai pesan sebagai persisten dengan mengatur mode pengiriman “2". 

```
boolean durable = true;
channel.queueDeclare("my_queue", durable, false, false, null);
```

 Setelah mengonfigurasi antrean sebagai tahan lama, Anda dapat mengirim pesan persisten ke antrean dengan mengatur `MessageProperties` ke `PERSISTENT_TEXT_PLAIN` seperti yang ditampilkan dalam contoh berikut. 

```
import com.rabbitmq.client.MessageProperties;

channel.basicPublish("", "my_queue",
            MessageProperties.PERSISTENT_TEXT_PLAIN,
            message.getBytes());
```

## Langkah 2: Konfigurasikan konfirmasi penerbit dan pengakuan pengiriman konsumen
<a name="configure-confirmation-acknowledgement"></a>

 Proses konfirmasi pesan telah dikirim ke broker dikenal sebagai *konfirmasi penerbit*. Publisher mengonfirmasi membiarkan aplikasi Anda tahu kapan pesan telah disimpan dengan andal. Konfirmasi penerbit juga dapat membantu mengontrol tingkat pesan yang disimpan ke broker. Tanpa konfirmasi penerbit, tidak ada konfirmasi bahwa pesan diproses dengan sukses, dan broker Anda dapat menjatuhkan pesan yang tidak dapat diproses. 

 Demikian pula, ketika aplikasi klien mengirimkan konfirmasi pengiriman dan konsumsi pesan kembali ke broker, itu dikenal sebagai *pengakuan pengiriman konsumen*. Konfirmasi dan pengakuan sangat penting untuk memastikan keamanan data saat bekerja dengan broker RabbitMQ. 

 Pengakuan pengiriman konsumen biasanya dikonfigurasi pada aplikasi klien. Saat bekerja dengan AMQP 0-9-1, pengakuan dapat diaktifkan dengan mengonfigurasi metode. `basic.consume` Klien AMQP 0-9-1 juga dapat mengonfigurasi konfirmasi penerbit dengan mengirimkan metode. `confirm.select` 

 Biasanya, pengakuan pengiriman diaktifkan di saluran. Misalnya, ketika bekerja dengan pustaka klien RabbitMQ Java, Anda dapat menggunakan `Channel#basicAck` untuk menyiapkan yang pengakuan positif `basic.ack` sederhana seperti yang ditampilkan dalam contoh berikut. 

```
// this example assumes an existing channel instance

boolean autoAck = false;
channel.basicConsume(queueName, autoAck, "a-consumer-tag",
     new DefaultConsumer(channel) {
         @Override
         public void handleDelivery(String consumerTag,
                                    Envelope envelope,
                                    AMQP.BasicProperties properties,
                                    byte[] body)
             throws IOException
         {
             long deliveryTag = envelope.getDeliveryTag();
             // positively acknowledge a single delivery, the message will
             // be discarded
             channel.basicAck(deliveryTag, false);
         }
     });
```

**catatan**  
 Pesan yang tidak diakui harus di-cache dalam memori. Anda dapat membatasi jumlah pesan yang diambil sebelumnya oleh konsumen dengan mengonfigurasi pengaturan [pra-pengambilan](best-practices-performance.md#configure-prefetching) untuk aplikasi klien. 

 Anda dapat mengonfigurasi `consumer_timeout` untuk mendeteksi ketika konsumen tidak mengakui pengiriman. Jika konsumen tidak mengirimkan pengakuan dalam nilai batas waktu, saluran akan ditutup, dan Anda akan menerima a. `PRECONDITION_FAILED` Untuk mendiagnosis kesalahan, gunakan [UpdateConfiguration](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/configurations-configuration-id.html)API untuk meningkatkan `consumer_timeout` nilai. 

## Langkah 3: Jaga antrian pendek
<a name="keep-queues-short"></a>

Dalam penerapan cluster, antrian dengan sejumlah besar pesan dapat menyebabkan pemanfaatan sumber daya yang berlebihan. Ketika broker dimanfaatkan secara berlebihan, me-reboot Amazon MQ untuk broker RabbitMQ dapat menyebabkan penurunan kinerja lebih lanjut. Jika reboot, broker yang terlalu banyak digunakan mungkin menjadi tidak responsif di negara bagian. `REBOOT_IN_PROGRESS`

Selama [jendela pemeliharaan](amazon-mq-rabbitmq-editing-broker-preferences.md#rabbitmq-edit-current-configuration-console), Amazon MQ melakukan semua pekerjaan pemeliharaan, satu simpul pada satu waktu, untuk memastikan bahwa broker tetap operasional. Akibatnya, antrian mungkin perlu disinkronkan karena setiap simpul melanjutkan operasi. Selama sinkronisasi, pesan yang perlu direplikasi ke cermin dimuat ke dalam memori dari volume Amazon Elastic Block Store (Amazon EBS) yang sesuai untuk diproses dalam batch. Memproses pesan dalam batch memungkinkan antrean menyinkronkan lebih cepat.

Jika antrean dibuat tetap pendek dan pesan berukuran kecil, antrean berhasil disinkronkan dan melanjutkan operasi seperti yang diharapkan. Namun, jika jumlah data dalam batch mendekati batas memori simpul, simpul memicu alarm memori tinggi, menjeda sinkronisasi antrean. Anda dapat mengonfirmasi penggunaan memori dengan membandingkan [metrik node `RabbitMemUsed` dan `RabbitMqMemLimit` broker di CloudWatch](amazon-mq-accessing-metrics.md). Sinkronisasi tidak dapat diselesaikan hingga pesan dikonsumsi atau dihapus, atau jumlah pesan dalam batch berkurang.

 Jika sinkronisasi antrian dijeda untuk penerapan klaster, sebaiknya gunakan atau hapus pesan untuk menurunkan jumlah pesan dalam antrian. Setelah kedalaman antrian berkurang dan sinkronisasi antrian selesai, status broker akan berubah menjadi. `RUNNING` Untuk menyelesaikan sinkronisasi antrian yang dijeda, Anda juga dapat menerapkan kebijakan untuk [mengurangi ukuran batch sinkronisasi antrian](rabbitmq-queue-sync.md). 

Anda juga dapat menentukan kebijakan penghapusan otomatis dan TTL untuk secara proaktif mengurangi penggunaan sumber daya, serta menjaga NACKs dari konsumen seminimal mungkin. Requeueing pesan pada broker adalah CPU intensif sehingga jumlah yang tinggi NACKs dapat mempengaruhi kinerja broker. 

# Praktik terbaik untuk pengoptimalan kinerja dan efisiensi di Amazon MQ untuk RabbitMQ
<a name="best-practices-performance"></a>

 Anda dapat mengoptimalkan Amazon MQ Anda untuk kinerja broker RabbitMQ dengan memaksimalkan throughput, meminimalkan latensi, dan memastikan pemanfaatan sumber daya yang efisien. Selesaikan praktik terbaik berikut untuk mengoptimalkan kinerja aplikasi Anda. 

## Langkah 1: Simpan ukuran pesan di bawah 1 MB
<a name="keep-messages-under-one-mb"></a>

 Sebaiknya simpan pesan di bawah 1 Megabyte (MB) untuk kinerja dan keandalan yang optimal. 

 RabbitMQ 3.13 mendukung ukuran pesan hingga 128 MB secara default, tetapi pesan besar dapat memicu alarm memori yang tidak terduga yang memblokir penerbitan dan berpotensi menciptakan tekanan memori tinggi saat mereplikasi pesan di seluruh node. Pesan yang terlalu besar juga dapat memengaruhi proses restart dan pemulihan broker, yang meningkatkan risiko terhadap kontinuitas layanan dan dapat menyebabkan penurunan kinerja. 

 **Simpan dan ambil muatan besar menggunakan pola pemeriksaan klaim** 

 Untuk mengelola pesan besar, Anda dapat menerapkan pola pemeriksaan klaim dengan menyimpan muatan pesan di penyimpanan eksternal dan hanya mengirim pengidentifikasi referensi payload melalui RabbitMQ. Konsumen menggunakan pengidentifikasi referensi payload untuk mengambil dan memproses pesan besar. 

 Diagram berikut menunjukkan cara menggunakan Amazon MQ untuk RabbitMQ dan Amazon S3 untuk menerapkan pola pemeriksaan klaim. 

![\[Diagram showing data flow between Producer, Consumer, Amazon MQ broker, and AWS S3.\]](http://docs.aws.amazon.com/id_id/amazon-mq/latest/developer-guide/images/claim-check-pattern.png)


 [Contoh berikut menunjukkan pola ini menggunakan Amazon MQ, [SDK for Java AWS 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html), dan Amazon S3:](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 

1.  Pertama, tentukan kelas Pesan yang akan menampung pengenal referensi Amazon S3. 

   ```
   class Message {
       // Other data fields of the message...
   
       public String s3Key;
       public String s3Bucket;
   }
   ```

1.  Buat metode penerbit yang menyimpan muatan di Amazon S3 dan mengirim pesan referensi melalui RabbitMQ. 

   ```
   public void publishPayload() {
       // Store the payload in S3.
       String payload = PAYLOAD;
       String prefix = S3_KEY_PREFIX;
       String s3Key = prefix + "/" + UUID.randomUUID();
       s3Client.putObject(PutObjectRequest.builder()
           .bucket(S3_BUCKET).key(s3Key).build(), 
           RequestBody.fromString(payload));
       
       // Send the reference through RabbitMQ.
       Message message = new Message();
       message.s3Key = s3Key;
       message.s3Bucket = S3_BUCKET;
       // Assign values to other fields in your message instance.
   
       publishMessage(message);
   }
   ```

1.  Menerapkan metode konsumen yang mengambil payload dari Amazon S3, memproses payload, dan menghapus objek Amazon S3. 

   ```
   public void consumeMessage(Message message) {
       // Retrieve the payload from S3.
       String payload = s3Client.getObjectAsBytes(GetObjectRequest.builder()
           .bucket(message.s3Bucket).key(message.s3Key).build())
           .asUtf8String();
       
       // Process the complete message.
       processPayload(message, payload);
       
       // Delete the S3 object.
       s3Client.deleteObject(DeleteObjectRequest.builder()
           .bucket(message.s3Bucket).key(message.s3Key).build());
   }
   ```

## Langkah 2: Gunakan `basic.consume` dan konsumen berumur panjang
<a name="use-basic-consume"></a>

 Menggunakan `basic.consume` dengan konsumen berumur panjang lebih efisien daripada polling untuk menggunakan pesan individu. `basic.get` Untuk informasi selengkapnya, lihat [Polling untuk pesan individual](https://www.rabbitmq.com/docs/3.13/consumers#polling). 

## Langkah 3: Konfigurasikan pra-pengambilan
<a name="configure-prefetching"></a>

 Anda dapat menggunakan nilai pra-pengambilan RabbitMQ untuk mengoptimalkan cara konsumen mengonsumsi pesan. RabbitMQ mengimplementasikan mekanisme pra-pengambilan saluran yang disediakan oleh AMQP 0-9-1 dengan menerapkan jumlah pra-pengambilan untuk konsumen yang bertentangan dengan saluran. Nilai pra-pengambilan digunakan untuk menentukan jumlah pesan yang dikirim ke konsumen pada waktu tertentu. Secara default, RabbitMQ menetapkan ukuran buffer yang tidak terbatas untuk aplikasi klien. 

 Ada berbagai faktor yang perlu dipertimbangkan saat menetapkan jumlah pra-pengambilan untuk konsumen RabbitMQ. Pertama, pertimbangkan lingkungan dan konfigurasi konsumen Anda. Karena konsumen perlu menyimpan semua pesan dalam memori saat pesan sedang diproses, nilai pra-pengambilan yang tinggi dapat memiliki dampak negatif pada performa konsumen, dan di beberapa kasus, membuat konsumen berpotensi merusak semuanya. Demikian pula, broker RabbitMQ sendiri menyimpan semua pesan yang dikirimkannya dalam cache dalam memori sampai menerima pengakuan konsumen. Nilai pra-pengambilan yang tinggi dapat menyebabkan server RabbitMQ Anda kehabisan memori dengan cepat jika pengakuan otomatis tidak dikonfigurasi untuk konsumen, dan jika konsumen mengambil waktu yang relatif lama untuk memproses pesan. 

Dengan pertimbangan di atas, kami rekomendasikan Anda untuk selalu menetapkan nilai pra-pengambilan agar terhindar dari situasi ketika broker RabbitMQ atau konsumen kehabisan memori karena sejumlah besar pesan yang belum diproses, atau tidak diakui. Jika perlu mengoptimalkan broker untuk memproses pesan dalam volume besar, Anda dapat menguji broker dan konsumen menggunakan berbagai jumlah pra-pengambilan untuk menentukan nilai titik ketika overhead jaringan menjadi sangat tidak signifikan dibandingkan dengan waktu yang dibutuhkan konsumen untuk memproses pesan.

**catatan**  
Jika aplikasi klien Anda telah dikonfigurasi untuk secara otomatis mengakui pengiriman pesan ke konsumen, menetapkan nilai pra-pengambilan tidak akan berpengaruh.
Semua pesan pra-pengambilan dihapus dari antrean.

Contoh berikut mendemonstrasikan cara menentukan nilai pra-pengambilan `10` untuk konsumen tunggal menggunakan pustaka klien RabbitMQ Java.

```
ConnectionFactory factory = new ConnectionFactory();

Connection connection = factory.newConnection();
Channel channel = connection.createChannel();

channel.basicQos(10, false);

QueueingConsumer consumer = new QueueingConsumer(channel);
channel.basicConsume("my_queue", false, consumer);
```

**catatan**  
Dalam pustaka klien RabbitMQ Java, nilai default untuk bendera `global`diatur ke `false`, sehingga contoh di atas dapat ditulis hanya sebagai `channel.basicQos(10)`.

## Langkah 4: Gunakan Seledri 5.5 atau lebih baru dengan antrian kuorum
<a name="use-celery-with-quorum-queues"></a>

 [Python Celery](https://docs.celeryq.dev/en/stable/index.html), sistem antrian tugas terdistribusi, dapat menghasilkan banyak pesan non-kritis saat mengalami beban tugas yang tinggi. Aktivitas broker tambahan ini dapat memicu [Amazon MQ untuk RabbitMQ: Alarm memori tinggi](troubleshooting-action-required-codes-rabbitmq-memory-alarm.md) dan menyebabkan tidak tersedianya broker. Untuk mengurangi kemungkinan memicu alarm memori, lakukan hal berikut: 

**Untuk semua versi Seledri**

1. Matikan [https://docs.celeryq.dev/en/stable/userguide/configuration.html#std-setting-task_create_missing_queues](https://docs.celeryq.dev/en/stable/userguide/configuration.html#std-setting-task_create_missing_queues)untuk mengurangi churn antrian.

1.  Kemudian, matikan `worker_enable_remote_control` untuk menghentikan pembuatan `celery@...pidbox` antrian dinamis. Ini akan mengurangi churn antrian pada broker. 

   ```
   worker_enable_remote_control = false
   ```

1.  Untuk lebih mengurangi aktivitas pesan non-kritis, matikan Seledri [worker-send-task-events](https://docs.celeryq.dev/en/stable/userguide/configuration.html#worker-send-task-events)dengan tidak menyertakan `-E` atau `--task-events` menandai saat memulai aplikasi Seledri Anda. 

1.  Mulai aplikasi Seledri Anda menggunakan parameter berikut: 

   ```
   celery -A app_name worker --without-heartbeat --without-gossip --without-mingle
   ```

**Untuk Seledri versi 5.5 dan di atas**

1.  Tingkatkan ke [Celery versi 5.5](https://docs.celeryq.dev/en/latest/changelog.html#version-5-5-0), versi minimum yang mendukung antrian kuorum, atau versi yang lebih baru. Untuk memeriksa versi Seledri apa yang Anda gunakan, gunakan`celery --version`. Untuk informasi lebih lanjut tentang antrian kuorum, lihat. [Antrian kuorum untuk RabbitMQ di Amazon MQ](quorum-queues.md) 

1.  Setelah memutakhirkan ke Celery 5.5 atau yang lebih baru, konfigurasikan `task_default_queue_type` ke [“kuorum”](https://docs.celeryq.dev/en/stable/userguide/configuration.html#std-setting-task_default_queue_type).

1.  Kemudian, Anda juga harus mengaktifkan Publikasikan Konfirmasi di [Opsi Transportasi Broker](https://docs.celeryq.dev/en/stable/userguide/configuration.html#std-setting-broker_transport_options): 

   ```
   broker_transport_options = {"confirm_publish": True}
   ```

# Praktik terbaik untuk ketahanan dan pemantauan jaringan di Amazon MQ untuk RabbitMQ
<a name="best-practices-network-resilience"></a>

 Ketahanan jaringan dan metrik pialang pemantauan sangat penting untuk memelihara aplikasi perpesanan yang andal. Selesaikan praktik terbaik berikut untuk menerapkan mekanisme pemulihan otomatis dan strategi pemantauan sumber daya. 

## Langkah 1: Secara otomatis pulih dari kegagalan jaringan
<a name="automatically-recover-from-network-failures"></a>

Kami merekomendasikan untuk selalu mengaktifkan pemulihan jaringan otomatis guna mencegah waktu henti yang signifikan ketika koneksi klien ke node RabbitMQ gagal. Pustaka klien RabbitMQ Java mendukung pemulihan jaringan otomatis secara default, dimulai dari versi `4.0.0`.

[Pemulihan koneksi otomatis dipicu jika pengecualian yang tidak tertangani dilemparkan ke I/O loop koneksi, jika batas waktu operasi baca soket terdeteksi, atau jika server melewatkan detak jantung.](https://www.rabbitmq.com/heartbeats.html)

Dalam kasus ketika koneksi awal antara klien dan node RabbitMQ gagal, pemulihan otomatis tidak akan dipicu. Kami merekomendasikan Anda menulis kode aplikasi untuk memperhitungkan kegagalan koneksi awal dengan mencoba ulang koneksi. Contoh berikut mendemonstrasikan percobaan ulang kegagalan jaringan awal menggunakan pustaka klien RabbitMQ Java.

```
ConnectionFactory factory = new ConnectionFactory();
// enable automatic recovery if using RabbitMQ Java client library prior to version 4.0.0.
factory.setAutomaticRecoveryEnabled(true);
// configure various connection settings

try {
  Connection conn = factory.newConnection();
} catch (java.net.ConnectException e) {
  Thread.sleep(5000);
  // apply retry logic
}
```

**catatan**  
Jika aplikasi menutup koneksi menggunakan metode `Connection.Close`, pemulihan jaringan otomatis tidak akan diaktifkan atau dipicu.

## Langkah 2: Pantau metrik dan alarm broker
<a name="monitor-metrics-alarms"></a>

 Kami merekomendasikan pemantauan [CloudWatch metrik](amazon-mq-accessing-metrics.md) dan alarm secara teratur untuk Amazon MQ Anda untuk broker RabbitMQ untuk mengidentifikasi dan mengatasi potensi masalah sebelum memengaruhi aplikasi perpesanan Anda. Pemantauan proaktif sangat penting untuk menjaga aplikasi pesan yang tangguh dan memastikan kinerja yang optimal. 

 Amazon MQ untuk RabbitMQ menerbitkan metrik CloudWatch yang memberikan wawasan tentang kinerja broker, pemanfaatan sumber daya, dan alur pesan. Metrik utama untuk memantau termasuk penggunaan memori dan penggunaan disk. Anda dapat mengatur [CloudWatch alarm](https://docs.aws.amazon.com/Ihttps://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Alarm-On-Metrics.html) ketika broker Anda mendekati batas sumber daya atau mengalami penurunan kinerja. 

Pantau metrik penting berikut:

**`RabbitMQMemUsed` dan `RabbitMQMemLimit`**  
Pantau penggunaan memori untuk mencegah alarm memori yang dapat memblokir penerbitan pesan.

**`RabbitMQDiskFree` dan `RabbitMQDiskFreeLimit`**  
Pantau penggunaan disk untuk menghindari masalah ruang disk yang dapat menyebabkan kegagalan broker.

 Untuk penerapan klaster, pantau juga [metrik khusus node untuk mengidentifikasi masalah spesifik node](rabbitmq-logging-monitoring.md#security-logging-monitoring-cloudwatch-destination-metrics-rabbitmq). 

**catatan**  
Untuk informasi selengkapnya tentang cara mencegah alarm memori tinggi, lihat [Alamat dan mencegah alarm memori tinggi](troubleshooting-action-required-codes-rabbitmq-memory-alarm.md#address-prevent-high-memory-alarm).

# Tutorial RabbitMQ
<a name="rabbitmq-on-amazon-mq"></a>

Tutorial berikut menunjukkan cara mengonfigurasi dan menggunakan RabbitMQ di Amazon MQ. Untuk mempelajari lebih lanjut tentang bekerja dengan pustaka klien yang didukung dalam berbagai bahasa pemrograman seperti Node.js, Python, .NET, dan lainnya, lihat [Tutorial RabbitMQ](https://www.rabbitmq.com/getstarted.html) dalam *Panduan Memulai RabbitMQ*.

**Topics**
+ [Mengedit preferensi broker](amazon-mq-rabbitmq-editing-broker-preferences.md)
+ [Menggunakan Python Pika dengan Amazon MQ untuk RabbitMQ](amazon-mq-rabbitmq-pika.md)
+ [Menyelesaikan sinkronisasi antrean RabbitMQ yang dijeda](rabbitmq-queue-sync.md)
+ [Mengurangi jumlah koneksi dan saluran](reducing-connections-and-channels.md)
+ [Langkah 2: Hubungkan aplikasi berbasis JVM ke broker Anda](#rabbitmq-connect-jvm-application)
+ [Connect your Amazon MQ for RabbitMQ broker to Lambda](#rabbitmq-connect-to-lambda)
+ [Menggunakan otentikasi OAuth 2.0 dan otorisasi untuk Amazon MQ untuk RabbitMQ](oauth-tutorial.md)
+ [Menggunakan otentikasi dan otorisasi IAM untuk Amazon MQ untuk RabbitMQ](rabbitmq-iam-tutorial.md)
+ [Menggunakan otentikasi dan otorisasi LDAP untuk Amazon MQ untuk RabbitMQ](rabbitmq-ldap-tutorial.md)
+ [Menggunakan otentikasi HTTP dan otorisasi untuk Amazon MQ untuk RabbitMQ](rabbitmq-http-tutorial.md)
+ [Menggunakan otentikasi sertifikat SSL untuk Amazon MQ untuk RabbitMQ](rabbitmq-ssl-tutorial.md)
+ [Menggunakan mTL untuk AMQP dan endpoint manajemen](rabbitmq-mtls-tutorial.md)
+ [Menghubungkan aplikasi JMS Anda](rabbitmq-tutorial-jms.md)

# Mengedit preferensi broker
<a name="amazon-mq-rabbitmq-editing-broker-preferences"></a>

Anda dapat mengedit preferensi broker Anda, seperti mengaktifkan atau menonaktifkan CloudWatch log menggunakan. Konsol Manajemen AWS

## Mengedit opsi broker RabbitMQ
<a name="rabbitmq-edit-current-configuration-console"></a>

1. Masuk ke [konsol Amazon MQ](https://console.aws.amazon.com/amazon-mq/).

1. Dari daftar broker, pilih broker Anda (misalnya, **MyBroker**) dan kemudian pilih **Edit**.

1. Pada *MyBroker* halaman **Edit**, di bagian **Spesifikasi**, pilih **versi mesin Broker** atau **jenis Instance Broker**.

   

1. Di bagian **CloudWatch Log**, klik tombol toggle untuk mengaktifkan atau menonaktifkan log umum. Tidak ada langkah lain yang diperlukan.
**catatan**  
Untuk broker RabbitMQ, Amazon MQ secara otomatis menggunakan Service-Linked Role (SLR) untuk mempublikasikan log umum ke. CloudWatch Untuk informasi selengkapnya, lihat [Menggunakan peran tertaut layanan untuk Amazon MQ](using-service-linked-roles.md) 
Amazon MQ tidak mendukung pencatatan audit untuk broker RabbitMQ.

1. Di bagian **Pemeliharaan**, konfigurasikan jadwal pemeliharaan broker Anda:

   Untuk meningkatkan broker ke versi baru saat AWS merilisnya, pilih **Aktifkan peningkatan versi minor otomatis.** Peningkatan otomatis terjadi selama *jendela pemeliharaan* yang ditentukan oleh hari dalam seminggu, waktu dalam sehari (dalam format 24 jam), dan zona waktu (UTC secara default).

1. Pilih **Perubahan jadwal**.
**catatan**  
Jika Anda hanya memilih **Aktifkan peningkatan versi minor otomatis**, tombol berubah menjadi **Simpan** karena boot ulang broker tidak diperlukan.

   Preferensi Anda diterapkan pada broker Anda pada waktu yang ditentukan.

# Menggunakan Python Pika dengan Amazon MQ untuk RabbitMQ
<a name="amazon-mq-rabbitmq-pika"></a>

 Tutorial berikut menunjukkan bagaimana Anda dapat mengatur klien [Python Pika](https://github.com/pika/pika) dengan TLS dikonfigurasi untuk terhubung ke Amazon MQ untuk broker RabbitMQ. Pika adalah implementasi Python dari protokol AMQP 0-9-1 untuk RabbitMQ. Tutorial ini memandu Anda melalui instalasi Pika, mendeklarasikan antrian, menyiapkan penerbit untuk mengirim pesan ke pertukaran default broker, dan menyiapkan konsumen untuk menerima pesan dari antrian. 

**Topics**
+ [Prasyarat](#amazon-mq-rabbitmq-pika-prerequisites)
+ [Izin](#amazon-mq-rabbitmq-pika-permissions)
+ [Langkah satu: Buat klien Python Pika dasar](#amazon-mq-rabbitmq-pika-basic-client)
+ [Langkah kedua: Buat penerbit dan kirim pesan](#amazon-mq-rabbitmq-pika-publisher-basic-publish)
+ [Langkah ketiga: Buat konsumen dan terima pesan](#amazon-mq-rabbitmq-pika-consumer-basic-get)
+ [Langkah empat: (Opsional) Siapkan loop acara dan gunakan pesan](#amazon-mq-rabbitmq-pika-consumer-basic-consume)
+ [Apa selanjutnya?](#amazon-mq-rabbitmq-pika-whats-next)

## Prasyarat
<a name="amazon-mq-rabbitmq-pika-prerequisites"></a>

 Untuk menyelesaikan langkah-langkah dalam tutorial ini, Anda memerlukan prasyarat berikut: 
+ Amazon MQ untuk broker RabbitMQ. Untuk informasi selengkapnya, lihat [Membuat Amazon MQ untuk broker RabbitMQ](getting-started-rabbitmq.md#create-rabbitmq-broker).
+ [Python 3](https://www.python.org/downloads/) diinstal untuk sistem operasi Anda.
+ [Pika](https://pika.readthedocs.io/en/stable/) diinstal menggunakan Python`pip`. Untuk menginstal Pika, buka jendela terminal baru dan jalankan yang berikut ini.

  ```
  $ python3 -m pip install pika
  ```

## Izin
<a name="amazon-mq-rabbitmq-pika-permissions"></a>

Untuk tutorial ini, Anda memerlukan setidaknya satu Amazon MQ untuk pengguna broker RabbitMQ dengan izin untuk menulis ke, dan membaca dari, vhost. Tabel berikut menjelaskan izin minimum yang diperlukan sebagai pola ekspresi reguler (regexp).


| Tag | Konfigurasikan regexp | Tulis regexp | Baca regexp | 
| --- | --- | --- | --- | 
| none |  | .\$1 | .\$1 | 

 Izin pengguna yang tercantum hanya memberikan izin baca dan tulis kepada pengguna, tanpa memberikan akses ke plugin manajemen untuk melakukan operasi administratif pada broker. Anda dapat membatasi izin lebih lanjut dengan menyediakan pola regexp yang membatasi akses pengguna ke antrian tertentu. Misalnya, jika Anda mengubah pola regexp baca menjadi`^[hello world].*`, pengguna hanya akan memiliki izin untuk membaca dari antrian yang dimulai dengan. `hello world` 

Untuk informasi selengkapnya tentang cara membuat pengguna RabbitMQ serta mengelola tanda dan izin pengguna, lihat [Amazon MQ untuk pengguna broker RabbitMQ](rabbitmq-simple-auth-broker-users.md#rabbitmq-basic-elements-user).

## Langkah satu: Buat klien Python Pika dasar
<a name="amazon-mq-rabbitmq-pika-basic-client"></a>

Untuk membuat kelas basis klien Python Pika yang mendefinisikan konstruktor dan menyediakan konteks SSL yang diperlukan untuk konfigurasi TLS saat berinteraksi dengan Amazon MQ untuk broker RabbitMQ, lakukan hal berikut.

1.  Buka jendela terminal baru, buat direktori baru untuk proyek Anda, dan arahkan ke direktori. 

   ```
   $ mkdir pika-tutorial
   $ cd pika-tutorial
   ```

1.  Buat file baru,`basicClient.py`, yang berisi kode Python berikut. 

   ```
   import ssl
   import pika
   
   class BasicPikaClient:
   
       def __init__(self, rabbitmq_broker_id, rabbitmq_user, rabbitmq_password, region):
   
           # SSL Context for TLS configuration of Amazon MQ for RabbitMQ
           ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
           ssl_context.set_ciphers('ECDHE+AESGCM:!ECDSA')
   
           url = f"amqps://{rabbitmq_user}:{rabbitmq_password}@{rabbitmq_broker_id}.mq.{region}.amazonaws.com:5671"
           parameters = pika.URLParameters(url)
           parameters.ssl_options = pika.SSLOptions(context=ssl_context)
   
           self.connection = pika.BlockingConnection(parameters)
           self.channel = self.connection.channel()
   ```

 Anda sekarang dapat menentukan kelas tambahan untuk penerbit dan konsumen yang mewarisi dari. `BasicPikaClient` 

## Langkah kedua: Buat penerbit dan kirim pesan
<a name="amazon-mq-rabbitmq-pika-publisher-basic-publish"></a>

 Untuk membuat penerbit yang mendeklarasikan antrian, dan mengirim satu pesan, lakukan hal berikut. 

1.  Salin isi contoh kode berikut, dan simpan secara lokal seperti `publisher.py` di direktori yang sama yang Anda buat pada langkah sebelumnya. 

   ```
   from basicClient import BasicPikaClient
   
   class BasicMessageSender(BasicPikaClient):
   
       def declare_queue(self, queue_name):
           print(f"Trying to declare queue({queue_name})...")
           self.channel.queue_declare(queue=queue_name)
   
       def send_message(self, exchange, routing_key, body):
           channel = self.connection.channel()
           channel.basic_publish(exchange=exchange,
                                 routing_key=routing_key,
                                 body=body)
           print(f"Sent message. Exchange: {exchange}, Routing Key: {routing_key}, Body: {body}")
   
       def close(self):
           self.channel.close()
           self.connection.close()
   
   if __name__ == "__main__":
   
       # Initialize Basic Message Sender which creates a connection
       # and channel for sending messages.
       basic_message_sender = BasicMessageSender(
           "<broker-id>",
           "<username>",
           "<password>",
           "<region>"
       )
   
       # Declare a queue
       basic_message_sender.declare_queue("hello world queue")
   
       # Send a message to the queue.
       basic_message_sender.send_message(exchange="", routing_key="hello world queue", body=b'Hello World!')
   
       # Close connections.
       basic_message_sender.close()
   ```

    `BasicMessageSender`Kelas mewarisi dari `BasicPikaClient` dan mengimplementasikan metode tambahan untuk menghapus antrian, mengirim pesan ke antrian, dan menutup koneksi. Contoh kode merutekan pesan ke pertukaran default, dengan kunci routing sama dengan nama antrian. 

1.  Di bawah`if __name__ == "__main__":`, ganti parameter yang diteruskan ke pernyataan `BasicMessageSender` konstruktor dengan informasi berikut. 
   +  **`<broker-id>`** – ID unik yang dihasilkan Amazon MQ untuk broker. Anda dapat mengurai ID dari ARN broker. Misalnya, dengan ARN berikut, `arn:aws:mq:us-east-2:123456789012:broker:MyBroker:b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9`, ID broker akan menjadi `b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9`. 
   +  **`<username>`**— Nama pengguna untuk pengguna broker dengan izin yang cukup untuk menulis pesan ke broker. 
   +  **`<password>`**— Kata sandi untuk pengguna broker dengan izin yang cukup untuk menulis pesan ke broker. 
   +  **`<region>`**— AWS Wilayah tempat Anda membuat Amazon MQ untuk broker RabbitMQ. Misalnya, `us-west-2`. 

1.  Jalankan perintah berikut di direktori yang sama yang Anda buat`publisher.py`. 

   ```
   $ python3 publisher.py
   ```

   Jika kode berjalan dengan sukses, Anda akan melihat output berikut di jendela terminal Anda.

   ```
   Trying to declare queue(hello world queue)...
   Sent message. Exchange: , Routing Key: hello world queue, Body: b'Hello World!'
   ```

## Langkah ketiga: Buat konsumen dan terima pesan
<a name="amazon-mq-rabbitmq-pika-consumer-basic-get"></a>

 Untuk membuat konsumen yang menerima satu pesan dari antrian, lakukan hal berikut. 

1.  Salin isi contoh kode berikut, dan simpan secara lokal seperti `consumer.py` di direktori yang sama. 

   ```
   from basicClient import BasicPikaClient
   
   class BasicMessageReceiver(BasicPikaClient):
   
       def get_message(self, queue):
           method_frame, header_frame, body = self.channel.basic_get(queue)
           if method_frame:
               print(method_frame, header_frame, body)
               self.channel.basic_ack(method_frame.delivery_tag)
               return method_frame, header_frame, body
           else:
               print('No message returned')
   
       def close(self):
           self.channel.close()
           self.connection.close()
   
   
   if __name__ == "__main__":
   
       # Create Basic Message Receiver which creates a connection
       # and channel for consuming messages.
       basic_message_receiver = BasicMessageReceiver(
           "<broker-id>",
           "<username>",
           "<password>",
           "<region>"
       )
   
       # Consume the message that was sent.
       basic_message_receiver.get_message("hello world queue")
   
       # Close connections.
       basic_message_receiver.close()
   ```

    Mirip dengan penerbit yang Anda buat pada langkah sebelumnya, `BasicMessageReceiver` mewarisi dari `BasicPikaClient` dan mengimplementasikan metode tambahan untuk menerima satu pesan, dan menutup koneksi.

1.  Di bawah `if __name__ == "__main__":` pernyataan itu, ganti parameter yang diteruskan ke `BasicMessageReceiver` konstruktor dengan informasi Anda. 

1.  Jalankan perintah berikut di direktori proyek Anda. 

   ```
   $ python3 consumer.py
   ```

   Jika kode berjalan dengan sukses, Anda akan melihat isi pesan, dan header termasuk tombol routing, ditampilkan di jendela terminal Anda.

   ```
   <Basic.GetOk(['delivery_tag=1', 'exchange=', 'message_count=0', 'redelivered=False', 'routing_key=hello world queue'])> <BasicProperties> b'Hello World!'
   ```

## Langkah empat: (Opsional) Siapkan loop acara dan gunakan pesan
<a name="amazon-mq-rabbitmq-pika-consumer-basic-consume"></a>

 Untuk menggunakan beberapa pesan dari antrian, gunakan [https://pika.readthedocs.io/en/stable/modules/channel.html#pika.channel.Channel.basic_consume](https://pika.readthedocs.io/en/stable/modules/channel.html#pika.channel.Channel.basic_consume)metode Pika dan fungsi callback seperti yang ditunjukkan pada berikut 

1.  Dalam`consumer.py`, tambahkan definisi metode berikut ke `BasicMessageReceiver` kelas. 

   ```
   def consume_messages(self, queue):
       def callback(ch, method, properties, body):
           print(" [x] Received %r" % body)
   
       self.channel.basic_consume(queue=queue, on_message_callback=callback, auto_ack=True)
   
       print(' [*] Waiting for messages. To exit press CTRL+C')
       self.channel.start_consuming()
   ```

1.  Di`consumer.py`, di bawah`if __name__ == "__main__":`, panggil `consume_messages` metode yang Anda tentukan di langkah sebelumnya. 

   ```
   if __name__ == "__main__":
   
       # Create Basic Message Receiver which creates a connection and channel for consuming messages.
       basic_message_receiver = BasicMessageReceiver(
           "<broker-id>",
           "<username>",
           "<password>",
           "<region>"
       )
   
       # Consume the message that was sent.
       # basic_message_receiver.get_message("hello world queue")
   
       # Consume multiple messages in an event loop.
       basic_message_receiver.consume_messages("hello world queue")
   
       # Close connections.
       basic_message_receiver.close()
   ```

1.  Jalankan `consumer.py` lagi, dan jika berhasil, pesan antrian akan ditampilkan di jendela terminal Anda. 

   ```
   [*] Waiting for messages. To exit press CTRL+C
   [x] Received b'Hello World!'
   [x] Received b'Hello World!'
   ...
   ```

## Apa selanjutnya?
<a name="amazon-mq-rabbitmq-pika-whats-next"></a>
+  Untuk informasi selengkapnya tentang pustaka klien RabbitMQ lain yang didukung, lihat Dokumentasi Klien RabbitMQ di [situs web RabbitMQ](https://www.rabbitmq.com/clients.html). 

# Menyelesaikan sinkronisasi antrean RabbitMQ yang dijeda
<a name="rabbitmq-queue-sync"></a>

Dalam [deployment klaster](rabbitmq-broker-architecture.md#rabbitmq-broker-architecture-cluster) Amazon MQ for RabbitMQ, pesan yang dipublikasikan untuk setiap antrean direplikasi di tiga simpul broker. Replikasi ini, disebut sebagai *pencerminan*, menyediakan ketersediaan tinggi (HA) untuk broker RabbitMQ. Antrean dalam deployment klaster terdiri dari replika *utama* di satu simpul dan satu atau lebih *cermin*. Setiap operasi diterapkan ke antrean cermin, termasuk pesan penambahan antrean, terlebuh dahulu diterapkan ke antrean utama lalu direplikasi di seluruh cermin.

Misalnya, pertimbangkan antrean yang dicerminkan direplikasi di tiga simpul: simpul utama (`main`) dan dua cermin (`mirror-1` dan `mirror-2`). Jika semua pesan dalam antrean cermin ini berhasil disebarkan ke semua cermin, antrean akan disinkronkan. Jika simpul (`mirror-1`) menjadi tidak tersedia selama interval waktu tertentu, antrean tetap operasional dan dapat terus menambahkan antrean pesan. Namun, untuk menyinkronkan antrean, pesan dipublikasikan ke `main`, sementara `mirror-1` tidak tersedia dan harus direplikasi ke `mirror-1`.

Untuk informasi selengkapnya tentang pencerminan, lihat [Antrean Klasik yang Dicerminkan](https://www.rabbitmq.com/ha.html) di situs RabbitMQ.

**Pemeliharaan dan sinkronisasi antrian**

Selama [jendela pemeliharaan](amazon-mq-rabbitmq-editing-broker-preferences.md#rabbitmq-edit-current-configuration-console), Amazon MQ melakukan semua pekerjaan pemeliharaan, satu simpul pada satu waktu, untuk memastikan bahwa broker tetap operasional. Akibatnya, antrian mungkin perlu disinkronkan karena setiap simpul melanjutkan operasi. Selama sinkronisasi, pesan yang perlu direplikasi ke cermin dimuat ke dalam memori dari volume Amazon Elastic Block Store (Amazon EBS) yang sesuai untuk diproses dalam batch. Memproses pesan dalam batch memungkinkan antrean menyinkronkan lebih cepat.

Jika antrean dibuat tetap pendek dan pesan berukuran kecil, antrean berhasil disinkronkan dan melanjutkan operasi seperti yang diharapkan. Namun, jika jumlah data dalam batch mendekati batas memori simpul, simpul memicu alarm memori tinggi, menjeda sinkronisasi antrean. Anda dapat mengonfirmasi penggunaan memori dengan membandingkan [metrik node `RabbitMemUsed` dan `RabbitMqMemLimit` broker di CloudWatch](amazon-mq-accessing-metrics.md). Sinkronisasi tidak dapat diselesaikan hingga pesan dikonsumsi atau dihapus, atau jumlah pesan dalam batch berkurang.

**catatan**  
Mengurangi ukuran batch sinkronisasi antrean dapat mengakibatkan jumlah transaksi replikasi yang lebih tinggi.

Untuk mengatasi sinkronisasi antrean yang dijeda, ikuti langkah-langkah dalam tutorial ini, yang menunjukkan cara menerapkan kebijakan `ha-sync-batch-size` dan memulai ulang sinkronisasi antrean.

**Topics**
+ [Prasyarat](#rabbitmq-queue-sync-prerequisites)
+ [Langkah 1: Menerapkan kebijakan `ha-sync-batch-size`](#rabbitmq-queue-sync-step-1)
+ [Langkah 2: Memulai ulang sinkronisasi antrean](#rabbitmq-queue-sync-step-2)
+ [Langkah selanjutnya](#rabbitmq-queue-sync-next-steps)
+ [Sumber daya terkait](#rabbitmq-queue-sync-related-resources)

## Prasyarat
<a name="rabbitmq-queue-sync-prerequisites"></a>

Untuk tutorial ini, Anda harus memiliki pengguna broker Amazon MQ for RabbitMQ dengan izin administrator. Anda dapat menggunakan pengguna administrator yang dibuat ketika pertama kali membuat broker, atau pengguna lain yang mungkin telah Anda buat sesudahnya. Tabel berikut menyediakan tanda pengguna administrator yang diperlukan dan izin sebagai pola ekspresi reguler (regexp).


| Tanda | Baca regexp | Konfigurasikan regexp | Tulis regexp | 
| --- | --- | --- | --- | 
| administrator | .\$1 | .\$1 | .\$1 | 

Untuk informasi selengkapnya tentang cara membuat pengguna RabbitMQ serta mengelola tanda dan izin pengguna, lihat [Amazon MQ untuk pengguna broker RabbitMQ](rabbitmq-simple-auth-broker-users.md#rabbitmq-basic-elements-user).

## Langkah 1: Menerapkan kebijakan `ha-sync-batch-size`
<a name="rabbitmq-queue-sync-step-1"></a>

Prosedur berikut mendemonstrasikan penambahan kebijakan yang berlaku untuk semua antrean yang dibuat pada broker. Anda dapat menggunakan konsol web RabbitMQ atau API manajemen RabbitMQ. Untuk informasi selengkapnya, lihat [Plugin Manajemen](https://www.rabbitmq.com/management.html) di situs web RabbitMQ.

**Untuk menerapkan kebijakan `ha-sync-batch-size` menggunakan konsol web RabbitMQ**

1. Masuk ke [konsol Amazon MQ](https://console.aws.amazon.com/amazon-mq/).

1. Di panel navigasi kiri, pilih **Broker**.

1. Dari daftar broker, pilih nama broker yang ingin Anda terapkan kebijakan baru.

1. Di halaman broker, pada bagian **Koneksi**, pilih URL **konsol web RabbitMQ**. Konsol web RabbitMQ terbuka di tab browser atau jendela baru.

1. Masuk ke konsol web RabbitMQ dengan kredenal masuk administrator broker Anda.

1. Di konsol web RabbitMQ, di bagian atas halaman, pilih **Admin**.

1. Di halaman **Admin**, di panel navigasi kanan, pilih **Kebijakan**.

1. Di halaman **Kebijakan**, Anda dapat melihat daftar **Kebijakan pengguna** broker saat ini. Di bawah **Kebijakan pengguna**, perluas **Tambahkan / perbarui kebijakan**.
**catatan**  
Secara default, klaster Amazon MQ for RabbitMQ dibuat dengan kebijakan broker awal bernama `ha-all-AWS-OWNED-DO-NOT-DELETE`. Amazon MQ mengelola kebijakan ini untuk memastikan bahwa setiap antrean pada broker direplikasi ke ketiga simpul dan antrean tersebut disinkronkan secara otomatis.

1. Untuk membuat kebijakan broker baru, di bawah **Tambahkan / perbarui kebijakan**, lakukan hal berikut:

   1. Untuk **Nama**, masukkan nama untuk kebijakan Anda, misalnya **batch-size-policy**.

   1. Untuk **Pola**, masukkan pola regexp **.\$1** sehingga kebijakan cocok dengan semua antrean pada broker.

   1. Untuk **Terapkan ke**, pilih **Pertukaran dan antrean** dari daftar dropdown.

   1. Untuk **Prioritas**, masukkan integer yang lebih besar dari semua kebijakan lain yang diterapkan ke vhost. Anda dapat menerapkan satu set definisi kebijakan ke antrean dan pertukaran RabbitMQ pada waktu tertentu. RabbitMQ memilih kebijakan yang cocok dengan nilai prioritas tertinggi. Untuk informasi selengkapnya tentang prioritas kebijakan dan cara menggabungkan kebijakan, lihat [Kebijakan](https://www.rabbitmq.com/parameters.html#policies) dalam Dokumentasi Server RabbitMQ.

   1. Untuk **Definisi**, tambahkan pasangan nilai kunci berikut:
      + **ha-sync-batch-size**=*100*. Pilih **Nomor** dari daftar dropdown.
**catatan**  
Anda mungkin perlu menyesuaikan dan mengalibrasi nilai `ha-sync-batch-size` berdasarkan jumlah dan ukuran pesan yang tidak disinkronkan dalam antrean.
      + **ha-mode**=**all**. Pilih **String** dari daftar dropdown.
**penting**  
Definisi `ha-mode` diperlukan untuk semua kebijakan terkait HA. Menghilangkan hasilnya mengakibatkan kegagalan validasi.
      + **ha-sync-mode**=**automatic**. Pilih **String** dari daftar dropdown.
**catatan**  
Definisi `ha-sync-mode` diperlukan untuk semua kebijakan kustom. Jika dihilangkan, Amazon MQ secara otomatis menambahkan definisi.

   1. Pilih **Buat / perbarui kebijakan**.

1. Konfirmasi bahwa kebijakan baru muncul dalam daftar **Kebijakan pengguna**.

**Untuk menerapkan kebijakan `ha-sync-batch-size` menggunakan API manajemen RabbitMQ**

1. Masuk ke [konsol Amazon MQ](https://console.aws.amazon.com/amazon-mq/).

1. Di panel navigasi kiri, pilih **Broker**.

1. Dari daftar broker, pilih nama broker yang ingin Anda terapkan kebijakan baru.

1. Di halaman broker, pada bagian **Koneksi**, catat URL **konsol web RabbitMQ**. Ini adalah titik akhir broker yang Anda gunakan dalam permintaan HTTP.

1. Buka terminal atau jendela baris perintah baru pilihan Anda.

1. Untuk membuat kebijakan broker baru, masukkan perintah `curl` baru. Perintah ini mengasumsikan antrean pada vhost `/` default, yang dienkode sebagai `%2F`.
**catatan**  
Ganti *username* dan *password* dengan kredensi masuk administrator broker Anda. Anda mungkin perlu menyesuaikan dan mengkalibrasi nilai `ha-sync-batch-size` (*100*) berdasarkan jumlah dan ukuran pesan yang tidak disinkronkan dalam antrian Anda. Mengganti titik akhir broker dengan URL yang Anda catat sebelumnya.

   ```
   curl -i -u username:password -H "content-type:application/json" -XPUT \
   -d '{"pattern":".*", "priority":1, "definition":{"ha-sync-batch-size":100, "ha-mode":"all", "ha-sync-mode":"automatic"}}' \
   https://b-589c045f-f8ln-4ab0-a89c-co62e1c32ef8.mq.us-west-2.amazonaws.com/api/policies/%2F/batch-size-policy
   ```

1. Untuk mengonfirmasi bahwa kebijakan baru ditambahkan ke kebijakan pengguna broker, masukkan perintah `curl` berikut untuk daftar seluruh kebijakan broker.

   ```
   curl -i -u username:password https://b-589c045f-f8ln-4ab0-a89c-co62e1c32ef8.mq.us-west-2.amazonaws.com/api/policies
   ```

## Langkah 2: Memulai ulang sinkronisasi antrean
<a name="rabbitmq-queue-sync-step-2"></a>

Setelah menerapkan kebijakan `ha-sync-batch-size` baru untuk broker Anda, mulai ulang sinkronisasi antrean.

**Untuk memulai ulang sinkronisasi antrean menggunakan konsol web RabbitMQ**
**catatan**  
Untuk membuka konsol web RabbitMQ, lihat petunjuk sebelumnya di Langkah 1 dalam tutorial ini.

1. Di konsol web RabbitMQ, di bagian atas halaman, pilih **Antrean**.

1. Di halaman **Antrean**, di bawah **Semua antrean**, temukan antrean yang dijeda. Di baris **Kebijakan**, antrian Anda harus mencantumkan nama kebijakan baru yang Anda buat (misalnya,`batch-size-policy`).

1. Untuk memulai ulang proses sinkronisasi dengan ukuran batch yang dikurangi, pertama-tama batalkan sinkronisasi antrian. Kemudian restart sinkronisasi antrian. 

**catatan**  
Jika sinkronisasi dijeda dan tidak berhasil diselesaikan, coba kurangi nilai `ha-sync-batch-size` dan mulai ulang sinkronisasi antrean lagi.

## Langkah selanjutnya
<a name="rabbitmq-queue-sync-next-steps"></a>
+ Setelah antrian Anda berhasil disinkronkan, Anda dapat memantau jumlah memori yang digunakan node RabbitMQ Anda dengan melihat metrik Amazon. CloudWatch `RabbitMQMemUsed` Anda juga dapat melihat metrik `RabbitMQMemLimit` untuk memantau batas memori simpul. Untuk informasi lebih lanjut, lihat [Mengakses CloudWatch metrik untuk Amazon MQ](amazon-mq-accessing-metrics.md) dan [CloudWatch Metrik yang tersedia untuk Amazon MQ untuk broker RabbitMQ](rabbitmq-logging-monitoring.md).
+ Agar sinkronisasi antrean tidak dijeda, sebaiknya buat antrean tetap pendek dan memproses pesan. Untuk beban kerja dengan ukuran pesan yang lebih besar, kami juga merekomendasikan untuk meningkatkan tipe instans broker ke ukuran instans yang lebih besar dengan lebih banyak memori. Untuk informasi lebih lanjut tentang jenis instans broker dan mengedit preferensi broker, lihat[Mengedit preferensi broker](amazon-mq-rabbitmq-editing-broker-preferences.md).
+  Ketika Anda membuat broker Amazon MQ for RabbitMQ, Amazon MQ menerapkan serangkaian kebijakan default dan batasan host virtual untuk mengoptimalkan performa broker. Jika broker Anda tidak memiliki kebijakan dan batasan default yang disarankan, sebaiknya buat sendiri. Untuk informasi selengkapnya tentang cara membuat kebijakan default dan batasan vhost, lihat [https://docs.aws.amazon.com//amazon-mq/latest/developer-guide/rabbitmq-defaults.html](https://docs.aws.amazon.com//amazon-mq/latest/developer-guide/rabbitmq-defaults.html). 

## Sumber daya terkait
<a name="rabbitmq-queue-sync-related-resources"></a>
+  [UpdateBrokerInput](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/brokers-broker-id.html#brokers-broker-id-model-updatebrokerinput)— Gunakan properti broker ini untuk memperbarui jenis instans broker menggunakan Amazon MQ API.
+ [Parameter dan Kebijakan](https://www.rabbitmq.com/parameters.html) (Dokumentasi Server RabbitMQ) – Pelajari lebih lanjut tentang parameter dan kebijakan RabbitMQ di situs web RabbitMQ.
+ [HTTP API Manajemen RabbitMQ](https://pulse.mozilla.org/api/) – Pelajari lebih lanjut tentang API manajemen RabbitMQ.

# Mengurangi jumlah koneksi dan saluran
<a name="reducing-connections-and-channels"></a>

Koneksi ke RabbitMQ Anda di broker Amazon MQ dapat ditutup baik oleh aplikasi klien Anda, atau dengan menutupnya secara manual menggunakan konsol web RabbitMQ. Untuk menutup koneksi menggunakan konsol web RabbitMQ, lakukan hal berikut:

1. Masuk Konsol Manajemen AWS dan buka konsol web RabbitMQ broker Anda.

1.  **Pada konsol RabbitMQ, pilih tab Connections.** 

1. Pada halaman **Koneksi**, di bawah **Semua koneksi**, pilih nama koneksi yang ingin Anda tutup dari daftar.

1.  Pada halaman detail koneksi, pilih **Tutup koneksi ini** untuk memperluas bagian, lalu pilih **Paksa Tutup**. Secara opsional, Anda dapat mengganti teks default untuk **Alasan** dengan deskripsi Anda sendiri. RabbitMQ di Amazon MQ akan mengembalikan alasan yang Anda tentukan ke klien saat Anda menutup koneksi. 

1.  Pilih **OK** pada kotak dialog untuk mengonfirmasi dan menutup koneksi. 

 Saat Anda menutup koneksi, saluran apa pun yang terkait dengan koneksi tertutup juga akan ditutup. 

**catatan**  
 Aplikasi klien Anda dapat dikonfigurasi untuk secara otomatis membangun kembali koneksi ke broker setelah ditutup. Dalam hal ini, menutup koneksi dari konsol web broker tidak akan cukup untuk mengurangi jumlah koneksi atau saluran. 

Untuk broker tanpa akses publik, Anda dapat memblokir koneksi sementara dengan menolak lalu lintas masuk pada port protokol pesan yang sesuai, misalnya, port `5671` untuk koneksi AMQP. Anda dapat memblokir port di grup keamanan yang Anda berikan ke Amazon MQ saat membuat broker. Untuk informasi selengkapnya tentang memodifikasi grup keamanan, lihat [Menambahkan aturan ke grup keamanan](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#adding-security-group-rules) di Panduan Pengguna *Amazon VPC*. 

## Langkah 2: Hubungkan aplikasi berbasis JVM ke broker Anda
<a name="rabbitmq-connect-jvm-application"></a>

 Setelah membuat broker RabbitMQ, Anda dapat menghubungkan aplikasi ke broker. Contoh berikut menunjukkan cara menggunakan [Pustaka klien RabbitMQ Java](https://www.rabbitmq.com/java-client.html) untuk membuat koneksi ke broker, membuat antrean, dan mengirim pesan. Anda dapat terhubung ke broker RabbitMQ menggunakan pustaka klien RabbitMQ yang didukung untuk berbagai bahasa. Untuk informasi selengkapnya tentang pustaka klien RabbitMQ yang didukung, lihat pustaka klien [RabbitMQ](https://www.rabbitmq.com/devtools.html) dan alat pengembang. 

### Prasyarat
<a name="rabbitmq-connect-application-prerequisites-getting-started"></a>

**catatan**  
Langkah-langkah prasyarat berikut ini hanya berlaku untuk broker RabbitMQ yang dibuat tanpa aksesibilitas publik. Jika Anda membuat broker dengan aksesibilitas publik, Anda dapat melewatinya.

#### Mengaktifkan atribut VPC
<a name="rabbitmq-connect-application-enable-vpc-attributes-getting-started"></a>

Untuk memastikan bahwa broker dapat diakses dalam VPC, Anda harus mengaktifkan atribut VPC `enableDnsHostnames` dan `enableDnsSupport`. Untuk informasi selengkapnya, lihat [Dukungan DNS di VPC Anda](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support) dalam *Panduan Pengguna Amazon VPC*.

#### Mengaktifkan koneksi masuk
<a name="rabbitmq-connect-application-allow-inbound-connections-getting-started"></a>

1. Masuk ke [konsol Amazon MQ](https://console.aws.amazon.com/amazon-mq/).

1. Dari daftar broker, pilih nama broker Anda (misalnya, **MyBroker**).

1. Pada ***MyBroker***halaman, di bagian **Koneksi**, catat alamat dan port URL konsol web broker dan protokol tingkat kabel.

1. Di bagian **Detail**, di bawah **Keamanan dan jaringan**, pilih nama grup keamanan Anda atau ![\[Pencil icon indicating an edit or modification action.\]](http://docs.aws.amazon.com/id_id/amazon-mq/latest/developer-guide/images/amazon-mq-tutorials-broker-details-link.png).

   Halaman **Grup Keamanan** Dasbor EC2 akan ditampilkan.

1. Dari daftar grup keamanan, pilih grup keamanan Anda.

1. Di bagian bawah halaman, pilih tab **Masuk**, lalu pilih **Edit**.

1. Di kotak dialog **Edit aturan masuk**, tambahkan aturan untuk setiap URL atau titik akhir yang Anda inginkan untuk dapat diakses secara publik (contoh berikut menampilkan cara melakukannya untuk konsol web broker).

   1. Pilih **Tambahkan aturan**.

   1. Untuk **Jenis**, pilih **TCP Kustom**.

   1. Untuk **Sumber**, biarkan **Kustom** dipilih lalu ketik alamat IP sistem yang Anda inginkan untuk dapat mengakses konsol web (misalnya, `192.0.2.1`).

   1. Pilih **Simpan**.

      Broker Anda kini dapat menerima koneksi masuk.

#### Menambahkan dependensi Java
<a name="rabbitmq-connect-application-java-dependencies-getting-started"></a>

Jika Anda menggunakan Apache Maven untuk mengotomatisasi build, tambahkan dependensi berikut ke file `pom.xml`. Untuk informasi selengkapnya tentang file Model Objek Proyek di Apache Maven, lihat [Pengantar](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) POM.

```
<dependency>
    <groupId>com.rabbitmq</groupId>
    <artifactId>amqp-client</artifactId>
    <version>5.9.0</version>
</dependency>
```

Jika Anda menggunakan [Gradle](https://docs.gradle.org/current/userguide/userguide.html) untuk mengotomatisasi build, nyatakan dependensi berikut.

```
dependencies {
    compile 'com.rabbitmq:amqp-client:5.9.0'
}
```

#### Mengimpor kelas `Connection` dan `Channel`
<a name="rabbitmq-import-connections-and-channels"></a>

 Klien RabbitMQ Java menggunakan `com.rabbitmq.client` sebagai paket tingkat atas, dengan kelas API `Connection` dan `Channel`, masing-masing mewakili koneksi dan saluran AMQP 0-9-1. Impor kelas `Connection` dan `Channel` sebelum menggunakannya, seperti yang ditampilkan dalam contoh berikut. 

```
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
```

#### Membuat `ConnectionFactory` dan menghubungkan ke broker Anda
<a name="rabbitmq-create-connection-factory-and-connect"></a>

Gunakan contoh berikut untuk membuat instans kelas `ConnectionFactory` dengan parameter yang diberikan. Gunakan metode `setHost` untuk mengonfigurasi titik akhir broker yang Anda perhatikan sebelumnya. Untuk koneksi tingkat wire `AMQPS`, gunakan port `5671`.

```
ConnectionFactory factory = new ConnectionFactory();

factory.setUsername(username);
factory.setPassword(password);

//Replace the URL with your information
factory.setHost("b-c8352341-ec91-4a78-ad9c-a43f23d325bb.mq.us-west-2.amazonaws.com");
factory.setPort(5671);

// Allows client to establish a connection over TLS
factory.useSslProtocol();

// Create a connection
Connection conn = factory.newConnection();

// Create a channel
Channel channel = conn.createChannel();
```

#### Memublikasikan pesan ke pertukaran
<a name="rabbitmq-publish-message"></a>

 Anda dapat menggunakan `Channel.basicPublish` untuk memublikasikan pesan ke pertukaran. Contoh berikut menggunakan kelas `Builder` AMQP untuk membangun objek properti pesan dengan jenis konten `plain/text`. 

```
byte[] messageBodyBytes = "Hello, world!".getBytes();
channel.basicPublish(exchangeName, routingKey,
             new AMQP.BasicProperties.Builder()
               .contentType("text/plain")
               .userId("userId")
               .build(),
               messageBodyBytes);
```

**catatan**  
Perhatikan bahwa `BasicProperties` adalah kelas bagian dalam dari kelas pemilik yang dihasilkan secara otomatis, `AMQP`.

#### Berlangganan antrian dan menerima pesan
<a name="rabbitmq-subscribe-receive-message"></a>

Anda dapat menerima pesan dengan berlangganan antrian menggunakan antarmuka. `Consumer` Setelah berlangganan, pesan kemudian akan dikirim secara otomatis saat mereka tiba.

Cara termudah untuk menerapkan `Consumer` adalah dengan menggunakan subkelas `DefaultConsumer`. Objek `DefaultConsumer` dapat diteruskan sebagai bagian dari panggilan `basicConsume` untuk menyiapkan langganan seperti yang ditampilkan dalam contoh berikut.

```
boolean autoAck = false;
channel.basicConsume(queueName, autoAck, "myConsumerTag",
     new DefaultConsumer(channel) {
         @Override
         public void handleDelivery(String consumerTag,
                                    Envelope envelope,
                                    AMQP.BasicProperties properties,
                                    byte[] body)
             throws IOException
         {
             String routingKey = envelope.getRoutingKey();
             String contentType = properties.getContentType();
             long deliveryTag = envelope.getDeliveryTag();
             // (process the message components here ...)
             channel.basicAck(deliveryTag, false);
         }
     });
```

**catatan**  
Karena kita menentukan `autoAck = false`, pesan yang dikirim ke `Consumer` perlu diakui, dan paling mudah dilakukan dengan metode `handleDelivery`, seperti yang ditampilkan dalam contoh.

#### Menutup koneksi Anda dan memutuskan koneksi dari broker
<a name="rabbitmq-disconnect"></a>

Untuk memutuskan koneksi dari broker RabbitMQ, tutup saluran dan koneksi seperti yang ditunjukkan di bawah ini.

```
channel.close();
conn.close();
```

**catatan**  
Untuk informasi selengkapnya tentang bekerja dengan pustaka klien Java RabbitMQ, lihat Panduan API Klien Java [RabbitMQ](https://www.rabbitmq.com/api-guide.html).

## Langkah 3: (Opsional) Connect ke AWS Lambda fungsi
<a name="rabbitmq-connect-to-lambda"></a>

 AWS Lambda dapat terhubung ke dan mengkonsumsi pesan dari broker Amazon MQ Anda. [Saat Anda menghubungkan broker ke Lambda, Anda membuat [pemetaan sumber peristiwa](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html) yang membaca pesan dari antrian dan memanggil fungsi secara sinkron.](https://docs.aws.amazon.com/lambda/latest/dg/invocation-sync.html) Pemetaan sumber acara yang Anda buat membaca pesan dari broker Anda dalam batch dan mengubahnya menjadi muatan Lambda dalam bentuk objek JSON. 

**Untuk menghubungkan broker Anda ke fungsi Lambda**

1. [Tambahkan izin peran IAM berikut ke peran eksekusi fungsi Lambda Anda.](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)
   + [mq: DescribeBroker](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/brokers-broker-id.html#brokers-broker-id-http-methods)
   + [EC2: CreateNetworkInterface](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html)
   + [EC2: DeleteNetworkInterface](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeleteNetworkInterface.html)
   + [EC2: DescribeNetworkInterfaces](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeNetworkInterfaces.html)
   + [EC2: DescribeSecurityGroups](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSecurityGroups.html)
   + [EC2: DescribeSubnets](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSubnets.html)
   + [EC2: DescribeVpcs](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeVpcs.html)
   + [log: CreateLogGroup](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogGroup.html)
   + [log: CreateLogStream](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogStream.html)
   + [log: PutLogEvents](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutLogEvents.html)
   + [manajer rahasia: GetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html)
**catatan**  
Tanpa izin IAM yang diperlukan, fungsi Anda tidak akan berhasil membaca catatan dari sumber daya Amazon MQ.

1.  (Opsional) Jika Anda telah membuat broker tanpa aksesibilitas publik, Anda harus melakukan salah satu hal berikut untuk memungkinkan Lambda terhubung ke broker Anda: 
   +  Konfigurasikan satu NAT gateway per subnet publik. *Untuk informasi selengkapnya, lihat [Akses Internet dan layanan untuk fungsi yang terhubung dengan VPC di Panduan](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html#vpc-internet) Pengembang.AWS Lambda * 
   + Buat koneksi antara Amazon Virtual Private Cloud (Amazon VPC) dan Lambda menggunakan titik akhir VPC. VPC Amazon Anda juga harus terhubung ke AWS Security Token Service (AWS STS) dan titik akhir Secrets Manager. *Untuk informasi selengkapnya, lihat [Mengonfigurasi titik akhir VPC antarmuka untuk](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc-endpoints.html)AWS Lambda Lambda di Panduan Pengembang.* 

1.  [Konfigurasikan broker Anda sebagai sumber acara](https://docs.aws.amazon.com/lambda/latest/dg/with-mq.html#services-mq-eventsourcemapping) untuk fungsi Lambda menggunakan. Konsol Manajemen AWS Anda juga dapat menggunakan [https://docs.aws.amazon.com/cli/latest/reference/lambda/create-event-source-mapping.html](https://docs.aws.amazon.com/cli/latest/reference/lambda/create-event-source-mapping.html) AWS Command Line Interface perintah. 

1.  Tulis beberapa kode untuk fungsi Lambda Anda untuk memproses pesan dari yang Anda konsumsi dari broker Anda. Payload Lambda yang diambil oleh pemetaan sumber acara Anda tergantung pada jenis mesin broker. Berikut ini adalah contoh payload Lambda untuk Amazon MQ untuk antrian RabbitMQ. 
**catatan**  
 Dalam contoh, `test` adalah nama antrian, dan `/` merupakan nama host virtual default. Saat menerima pesan, sumber acara mencantumkan pesan di bawah`test::/`. 

   ```
   {
     "eventSource": "aws:rmq",
     "eventSourceArn": "arn:aws:mq:us-west-2:112556298976:broker:test:b-9bcfa592-423a-4942-879d-eb284b418fc8",
     "rmqMessagesByQueue": {
       "test::/": [
         {
           "basicProperties": {
             "contentType": "text/plain",
             "contentEncoding": null,
             "headers": {
               "header1": {
                 "bytes": [
                   118,
                   97,
                   108,
                   117,
                   101,
                   49
                 ]
               },
               "header2": {
                 "bytes": [
                   118,
                   97,
                   108,
                   117,
                   101,
                   50
                 ]
               },
               "numberInHeader": 10
             }
             "deliveryMode": 1,
             "priority": 34,
             "correlationId": null,
             "replyTo": null,
             "expiration": "60000",
             "messageId": null,
             "timestamp": "Jan 1, 1970, 12:33:41 AM",
             "type": null,
             "userId": "AIDACKCEVSQ6C2EXAMPLE",
             "appId": null,
             "clusterId": null,
             "bodySize": 80
           },
           "redelivered": false,
           "data": "eyJ0aW1lb3V0IjowLCJkYXRhIjoiQ1pybWYwR3c4T3Y0YnFMUXhENEUifQ=="
         }
       ]
     }
   }
   ```

[https://docs.aws.amazon.com/lambda/latest/dg/with-mq.html](https://docs.aws.amazon.com/lambda/latest/dg/with-mq.html)

# Menggunakan otentikasi OAuth 2.0 dan otorisasi untuk Amazon MQ untuk RabbitMQ
<a name="oauth-tutorial"></a>

Tutorial ini menjelaskan cara mengonfigurasi [otentikasi OAuth 2.0](oauth-for-amq-for-rabbitmq.md) untuk Amazon MQ Anda untuk broker RabbitMQ menggunakan Amazon Cognito sebagai penyedia 2.0. OAuth 

**catatan**  
Amazon Cognito tidak tersedia di Tiongkok (Beijing) dan Tiongkok (Ningxia).

**penting**  
Tutorial ini khusus untuk Amazon Cognito, tetapi Anda dapat menggunakan penyedia identitas lain ()IdPs. Untuk informasi selengkapnya, lihat [Contoh Otentikasi OAuth 2.0](https://www.rabbitmq.com/docs/oauth2-examples).

**Topics**
+ [Prasyarat untuk mengonfigurasi otentikasi 2.0 OAuth](#oauth-tutorial-prerequisites)
+ [Mengonfigurasi otentikasi OAuth 2.0 dengan Amazon Cognito menggunakan AWS CLI](#oauth-tutorial-config-cognito-using-cli)
+ [Mengkonfigurasi OAuth 2.0 dan otentikasi sederhana dengan Amazon Cognito](#oauth-tutorial-config-both-auth-methods-using-cli)

## Prasyarat untuk mengonfigurasi otentikasi 2.0 OAuth
<a name="oauth-tutorial-prerequisites"></a>

Anda dapat mengatur sumber daya Amazon Cognito yang diperlukan dalam tutorial ini dengan menerapkan tumpukan, AWS CDK tumpukan [Amazon Cognito untuk plugin RabbitMQ](https://github.com/aws-samples/amazon-mq-samples/tree/main/rabbitmq-samples/rabbitmq-oauth2-cognito-sample) 2. OAuth Jika Anda menyiapkan Amazon Cognito secara manual, pastikan Anda memenuhi prasyarat berikut sebelum mengonfigurasi 2.0 OAuth di Amazon MQ Anda untuk broker RabbitMQ:

**Prasyarat untuk mengatur Amazon Cognito**
+ Siapkan titik akhir Amazon Cognito dengan membuat kumpulan pengguna. Untuk melakukan ini, lihat blog berjudul [Cara menggunakan OAuth 2.0 di Amazon Cognito: Pelajari tentang hibah 2.0 yang OAuth berbeda](https://aws.amazon.com/blogs/security/how-to-use-oauth-2-0-in-amazon-cognito-learn-about-the-different-oauth-2-0-grants/).
+ Buat server sumber daya yang dipanggil `rabbitmq` di kumpulan pengguna dengan cakupan berikut yang ditentukan:`read:all`,, `write:all``configure:all`, dan`tag:administrator`. Cakupan ini akan dikaitkan dengan izin RabbitMQ.

  Untuk informasi tentang membuat server sumber daya, lihat [Mendefinisikan server sumber daya untuk kumpulan pengguna (Konsol Manajemen AWS)](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-define-resource-servers.html#cognito-user-pools-define-resource-servers-console) di Panduan Pengembang *Amazon Cognito*.
+ Buat klien aplikasi berikut:
  + Klien aplikasi untuk jenis kumpulan pengguna`Machine-to-Machine application`. Ini adalah klien rahasia dengan rahasia klien yang akan digunakan untuk klien RabbitMQ AMQP. Untuk informasi selengkapnya tentang klien aplikasi dan membuatnya, lihat [Jenis klien aplikasi](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-client-apps.html#user-pool-settings-client-app-client-types) dan [Membuat klien aplikasi](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-client-apps.html#cognito-user-pools-app-idp-settings-console-create).
  + Klien aplikasi untuk jenis kumpulan pengguna`Single-page application`. Ini adalah klien publik yang akan digunakan untuk masuk pengguna ke konsol manajemen RabbitMQ. Anda harus memperbarui klien aplikasi ini untuk menyertakan titik akhir Amazon MQ untuk broker RabbitMQ yang akan Anda buat dalam prosedur berikut sebagai URL panggilan balik yang diizinkan. Untuk informasi selengkapnya, lihat [Menyiapkan login terkelola dengan konsol Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-managed-login.html#set-up-managed-login).

**Prasyarat untuk mengatur Amazon MQ**
+ Instalasi [Docker](https://docs.docker.com/engine/install/) yang berfungsi untuk menjalankan skrip bash yang memverifikasi apakah pengaturan OAuth 2.0 berhasil atau tidak.
+ AWS CLI versi >= `2.28.23` untuk membuat penambahan nama pengguna dan kata sandi opsional selama pembuatan broker.

## Mengonfigurasi otentikasi OAuth 2.0 dengan Amazon Cognito menggunakan AWS CLI
<a name="oauth-tutorial-config-cognito-using-cli"></a>

Prosedur berikut menunjukkan cara mengatur otentikasi OAuth 2.0 untuk Amazon MQ Anda untuk broker RabbitMQ menggunakan Amazon Cognito sebagai IDP. Prosedur ini digunakan AWS CLI untuk membuat dan mengkonfigurasi sumber daya yang diperlukan.

Dalam prosedur berikut, pastikan untuk mengganti nilai placeholder, seperti ConfigurationId dan Revision, *<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>* dan*<2>*, dengan nilai sebenarnya.

1. Buat konfigurasi baru menggunakan AWS CLI perintah [create-configuration](https://docs.aws.amazon.com/cli/latest/reference/mq/create-configuration.html) seperti yang ditunjukkan pada contoh berikut.

   ```
   aws mq create-configuration \
     --name "rabbitmq-oauth2-config" \
     --engine-type "RABBITMQ" \
     --engine-version "3.13"
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
       "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "AuthenticationStrategy": "simple",
       "Created": "2025-07-17T16:03:01.759943+00:00",
       "Id": "c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "LatestRevision": {
       "Created": "2025-07-17T16:03:01.759000+00:00",
       "Description": "Auto-generated default for rabbitmq-oauth2-config on RabbitMQ 3.13",
       "Revision": 1
       },
       "Name": "rabbitmq-oauth2-config"
   }
   ```

1. Buat file konfigurasi yang dipanggil **rabbitmq.conf** untuk menggunakan OAuth 2.0 sebagai metode otentikasi dan otorisasi, seperti yang ditunjukkan pada contoh berikut.

   ```
   auth_backends.1 = oauth2
   
   # FIXME: Update this value with the token signing key URL of your Amazon Cognito user pool.
   # If you used the AWS CDK stack to deploy Amazon Cognito, this is one of the stack outputs.
   auth_oauth2.jwks_url = ${RabbitMqOAuth2TestStack.JwksUri}
   auth_oauth2.resource_server_id = rabbitmq
   # Amazon Cognito does not include an audience field in access tokens
   auth_oauth2.verify_aud = false 
   
   # Amazon Cognito does not allow * in its custom scopes. Use aliases to translate between Amazon Cognito and RabbitMQ.
   auth_oauth2.scope_prefix = rabbitmq/
   auth_oauth2.scope_aliases.1.alias = rabbitmq/read:all
   auth_oauth2.scope_aliases.1.scope = rabbitmq/read:*/*
   auth_oauth2.scope_aliases.2.alias = rabbitmq/write:all
   auth_oauth2.scope_aliases.2.scope = rabbitmq/write:*/*
   auth_oauth2.scope_aliases.3.alias = rabbitmq/configure:all
   auth_oauth2.scope_aliases.3.scope = rabbitmq/configure:*/*
   
   # Allow OAuth 2.0 login for RabbitMQ management console
   management.oauth_enabled = true
   # FIXME: Update this value with the client ID of your public application client
   management.oauth_client_id = ${RabbitMqOAuth2TestStack.ManagementConsoleAppClientId}
   # FIXME: Update this value with the base JWKS URI (without /.well-known/jwks.json)
   auth_oauth2.issuer = ${RabbitMqOAuth2TestStack.Issuer}
   management.oauth_scopes = rabbitmq/tag:administrator
   ```

   Konfigurasi ini menggunakan [alias cakupan](https://www.rabbitmq.com/docs/oauth2#scope-translation) untuk memetakan cakupan yang ditentukan di Amazon Cognito ke cakupan yang kompatibel dengan RabbitMQ.

1. Perbarui konfigurasi menggunakan AWS CLI perintah [update-configuration](https://docs.aws.amazon.com/cli/latest/reference/mq/update-configuration.html) seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, tambahkan ID konfigurasi yang Anda terima sebagai respons Langkah 1 dari prosedur ini. Misalnya, **c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca**.

   ```
   aws mq update-configuration \
     --configuration-id "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>" \
     --data "$(cat rabbitmq.conf | base64 --wrap=0)"
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
       "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-b600ac8e-8183-4f74-a713-983e59f30e3d",
       "Created": "2025-07-17T16:57:04.520931+00:00",
       "Id": "c-b600ac8e-8183-4f74-a713-983e59f30e3d",
       "LatestRevision": {
           "Created": "2025-07-17T16:57:39.172000+00:00",
           "Revision": 2
       },
       "Name": "rabbitmq-oauth2-config",
       "Warnings": []
   }
   ```

1. Buat broker dengan konfigurasi OAuth 2.0 yang Anda buat di Langkah 2 prosedur ini. Untuk melakukan ini, gunakan AWS CLI perintah [create-broker](https://docs.aws.amazon.com/cli/latest/reference/mq/create-broker.html) seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, berikan ID konfigurasi dan nomor revisi yang Anda peroleh dalam tanggapan Langkah 1 dan 2 masing-masing. Misalnya, **c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca** dan **2**.

   ```
   aws mq create-broker \
    --broker-name "rabbitmq-oauth2-broker" \ 
    --engine-type "RABBITMQ" \
    --engine-version "3.13" \
    --host-instance-type "mq.m7g.large" \
    --deployment-mode "CLUSTER_MULTI_AZ" \
    --logs '{"General": true}' \
    --publicly-accessible \
    --configuration '{"Id": "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>","Revision": <2>}' \
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
       "BrokerArn": "arn:aws:mq:us-west-2:123456789012:broker:rabbitmq-oauth2-broker:b-2a1b5133-a10c-49d2-879b-8c176c34cf73",
       "BrokerId": "b-2a1b5133-a10c-49d2-879b-8c176c34cf73"
   }
   ```

1. Verifikasi bahwa status broker bertransisi dari `CREATION_IN_PROGRESS` ke`RUNNING`, menggunakan [AWS CLI perintah deskripsi-broker](https://docs.aws.amazon.com/cli/latest/reference/mq/describe-broker.html) seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, berikan ID broker yang Anda peroleh dalam hasil langkah sebelumnya Misalnya,**b-2a1b5133-a10c-49d2-879b-8c176c34cf73**.

   ```
   aws mq describe-broker \
    --broker-id "<b-2a1b5133-a10c-49d2-879b-8c176c34cf73>"
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut. Respons berikut adalah versi singkat dari output lengkap yang dikembalikan `describe-broker` perintah. Tanggapan ini menunjukkan status broker dan strategi otentikasi yang digunakan untuk mengamankan broker. Dalam hal ini, strategi `config_managed` otentikasi menunjukkan bahwa broker menggunakan OAuth 2 metode otentikasi.

   ```
   {
       "AuthenticationStrategy": "config_managed",
       ...,
       "BrokerState": "RUNNING",
       ...
   }
   ```

    Untuk masuk ke konsol manajemen RabbitMQ menggunakan OAuth2, titik akhir broker perlu ditambahkan sebagai URL panggilan balik yang valid di klien aplikasi Amazon Cognito yang sesuai. Untuk informasi selengkapnya, lihat Langkah 5 dalam pengaturan sampel tumpukan [CDK Amazon Cognito](https://github.com/aws-samples/amazon-mq-samples/tree/main/rabbitmq-samples/rabbitmq-oauth2-cognito-sample#step-5-update-callback-urls-if-using-placeholder-urls) kami. 

1. Verifikasi otentikasi dan otorisasi OAuth 2.0 dengan skrip berikut`perf-test.sh`.

   Gunakan skrip bash ini untuk menguji konektivitas ke Amazon MQ Anda untuk broker RabbitMQ. Skrip ini memperoleh token dari Amazon Cognito dan memverifikasi apakah koneksi telah dikonfigurasi dengan benar. Jika berhasil dikonfigurasi, Anda akan melihat broker Anda mempublikasikan dan menggunakan pesan.

   Jika Anda menerima `ACCESS_REFUSED` kesalahan, Anda dapat memecahkan masalah pengaturan konfigurasi Anda dengan menggunakan CloudWatch log untuk broker Anda. Anda dapat menemukan tautan untuk grup CloudWatch log untuk broker Anda di konsol Amazon MQ.

   Dalam skrip ini, Anda harus memberikan nilai-nilai berikut:
   + `CLIENT_ID`dan`CLIENT_SECRET`: Anda dapat menemukan nilai-nilai ini di halaman **Klien aplikasi** di konsol Amazon Cognito.
   + Domain Cognito: Anda dapat menemukannya di konsol Amazon Cognito. Di bawah **Branding**, pilih **Domain**. Pada halaman **Domain**, Anda dapat menemukan nilai ini di bawah bagian **Server sumber daya**.
   + Titik akhir broker Amazon MQ: Anda dapat menemukan nilai ini di bawah **Koneksi** di halaman detail broker konsol Amazon MQ.

   ```
   #! /bin/bash
   set -e
   
   # Client information
   ## FIXME: Update this value with the client ID and secret of your confidential application client
   CLIENT_ID=${RabbitMqOAuth2TestStack.AmqpAppClientId}
   CLIENT_SECRET=${RabbitMqOAuth2TestStack.AmqpAppClientSecret}
   
   # FIXME: Update this value with the domain of your Amazon Cognito user pool
   RESPONSE=$(curl -X POST ${RabbitMqOAuth2TestStack.TokenEndpoint} \
                   -H "Content-Type: application/x-www-form-urlencoded" \
                   -d "grant_type=client_credentials&client_id=${CLIENT_ID}&client_secret=${CLIENT_SECRET}&scope=rabbitmq/configure:all rabbitmq/read:all rabbitmq/tag:administrator rabbitmq/write:all")
   
   
   # Extract the access_token from the response.
   # This token will be passed in the password field when connecting to the broker.
   # Note that the username is left blank, the field is ignored by the plugin.
   BROKER_PASSWORD=$(echo ${RESPONSE} | jq -r '.access_token')
   
   # FIXME: Update this value with the endpoint of your broker. For example, b-89424106-7e0e-4abe-8e98-8de0dada7630.mq.us-east-1.on.aws.
   BROKER_DNS=<broker_dns>
   CONNECTION_STRING=amqps://:${BROKER_PASSWORD}@${BROKER_DNS}:5671 
   
   # Produce/consume messages using the above connection string
   QUEUES_COUNT=1
   PRODUCERS_COUNT=1
   CONSUMERS_COUNT=1
   PRODUCER_RATE=1
   
   docker run -it --rm --ulimit nofile=40960:40960 pivotalrabbitmq/perf-test:latest \
       --queue-pattern 'test-queue-%d' --queue-pattern-from 1 --queue-pattern-to $QUEUES_COUNT \
       --producers $PRODUCERS_COUNT --consumers $CONSUMERS_COUNT \
       --id "test${QUEUES_COUNT}q${PRODUCERS_COUNT}p${CONSUMERS_COUNT}c${PRODUCER_RATE}r" \
       --uri ${CONNECTION_STRING} \
       --flag persistent --rate $PRODUCER_RATE
   ```

## Mengkonfigurasi OAuth 2.0 dan otentikasi sederhana dengan Amazon Cognito
<a name="oauth-tutorial-config-both-auth-methods-using-cli"></a>

Saat Anda membuat broker dengan otentikasi OAuth 2.0, Anda dapat menentukan salah satu metode otentikasi berikut:
+ **OAuth 2.0 saja**: Untuk menggunakan metode ini, jangan berikan nama pengguna dan kata sandi saat membuat broker. [Prosedur sebelumnya](#oauth-tutorial-config-cognito-using-cli) menunjukkan cara menggunakan hanya metode otentikasi OAuth 2.0.
+ **Baik OAuth 2.0 dan otentikasi sederhana**: Untuk menggunakan metode ini, berikan nama pengguna dan kata sandi saat membuat broker. Juga, tambahkan `auth_backends.2 = internal` ke konfigurasi broker Anda, seperti yang ditunjukkan dalam prosedur berikut.

Dalam prosedur berikut, pastikan untuk mengganti nilai placeholder, seperti *<ConfigurationId>* dan*<Revision>*, dengan nilai aktualnya.

1. Untuk menggunakan kedua metode otentikasi, buat konfigurasi broker Anda, seperti yang ditunjukkan pada contoh berikut.

   ```
   auth_backends.1 = oauth2
   auth_backends.2 = internal
   
   # FIXME: Update this value with the token signing key URL of your Amazon Cognito user pool
   auth_oauth2.jwks_url = ${RabbitMqOAuth2TestStack.JwksUri}
   auth_oauth2.resource_server_id = rabbitmq
   auth_oauth2.verify_aud = false
   
   auth_oauth2.scope_prefix = rabbitmq/
   auth_oauth2.scope_aliases.1.alias = rabbitmq/read:all
   auth_oauth2.scope_aliases.1.scope = rabbitmq/read:*/*
   auth_oauth2.scope_aliases.2.alias = rabbitmq/write:all
   auth_oauth2.scope_aliases.2.scope = rabbitmq/write:*/*
   auth_oauth2.scope_aliases.3.alias = rabbitmq/configure:all
   auth_oauth2.scope_aliases.3.scope = rabbitmq/configure:*/*
   ```

   Konfigurasi ini menggunakan [alias cakupan](https://www.rabbitmq.com/docs/oauth2#scope-translation) untuk memetakan cakupan yang ditentukan di Amazon Cognito ke cakupan yang kompatibel dengan RabbitMQ.

1. Buat broker yang menggunakan kedua metode otentikasi, seperti yang ditunjukkan pada contoh berikut.

   ```
   aws mq create-broker \
    --broker-name "rabbitmq-oauth2-broker-with-internal-user" \
    --engine-type "RABBITMQ" \
    --engine-version "3.13" \
    --host-instance-type "mq.m7g.large" \
    --deployment-mode "CLUSTER_MULTI_AZ" \
    --logs '{"General": true}' \
    --publicly-accessible \
    --configuration '{"Id": "<ConfigurationId>","Revision": <Revision>}' \
    --users '[{"Username":"<myUser>","Password":"<myPassword11>"}]'
   ```

1. Verifikasi status broker dan konfigurasi untuk menyiapkan metode otentikasi berhasil seperti yang dijelaskan dalam Langkah 5 dan 6 dari [Mengonfigurasi otentikasi OAuth 2.0 dengan Amazon Cognito](#oauth-tutorial-config-cognito-using-cli) prosedur.

# Menggunakan otentikasi dan otorisasi IAM untuk Amazon MQ untuk RabbitMQ
<a name="rabbitmq-iam-tutorial"></a>

Prosedur berikut menunjukkan cara mengaktifkan otentikasi dan otorisasi AWS IAM untuk Amazon MQ untuk broker RabbitMQ. Setelah mengaktifkan IAM, pengguna dapat mengautentikasi menggunakan kredensional AWS IAM untuk mengakses API Manajemen RabbitMQ dan terhubung melalui AMQP. Untuk detail tentang cara kerja otentikasi IAM dengan Amazon MQ untuk RabbitMQ, lihat. [Otentikasi dan otorisasi IAM untuk Amazon MQ untuk RabbitMQ](iam-for-amq-for-rabbitmq.md)

## Prasyarat
<a name="iam-tutorial-prerequisites"></a>
+ AWS kredensi administrator untuk AWS akun yang memiliki Amazon MQ untuk broker RabbitMQ
+ Lingkungan shell yang dikonfigurasi dengan kredensi administrator ini (menggunakan profil AWS CLI atau variabel lingkungan)
+ AWS CLI diinstal dan dikonfigurasi
+ `jq`prosesor JSON baris perintah diinstal
+ `curl`alat baris perintah diinstal

## Mengkonfigurasi otentikasi dan otorisasi IAM menggunakan AWS CLI
<a name="iam-tutorial-procedure"></a>

1. **Tetapkan variabel lingkungan**

   Tetapkan variabel lingkungan yang diperlukan untuk broker Anda:

   ```
   export AWS_DEFAULT_REGION=<region>
   export BROKER_ID=<broker-id>
   ```

1. **Aktifkan token JWT keluar**

   Aktifkan federasi identitas web keluar untuk AWS akun Anda:

   ```
   ISSUER_IDENTIFIER=$(aws iam enable-outbound-web-identity-federation --query 'IssuerIdentifier' --output text)
   echo $ISSUER_IDENTIFIER
   ```

   Output menampilkan URL pengenal penerbit unik untuk akun Anda dalam format. `https://<id>.tokens.sts.global.api.aws`

1. **Buat dokumen kebijakan IAM**

   Buat dokumen kebijakan yang memberikan izin untuk mendapatkan token identitas web:

   ```
   cat > policy.json << 'EOF'
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "sts:GetWebIdentityToken",
                   "sts:TagGetWebIdentityToken"
               ],
               "Resource": "*"
           }
       ]
   }
   EOF
   ```

1. **Buat kebijakan kepercayaan**

   Ambil identitas penelepon Anda dan buat dokumen kebijakan kepercayaan:

   ```
   CALLER_ARN=$(aws sts get-caller-identity --query Arn --output text)
   cat > trust-policy.json << EOF
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "AWS": "$CALLER_ARN"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   EOF
   ```

1. **Buat peran IAM**

   Buat peran IAM dan lampirkan kebijakan:

   ```
   aws iam create-role --role-name RabbitMqAdminRole --assume-role-policy-document file://trust-policy.json
   aws iam put-role-policy --role-name RabbitMqAdminRole --policy-name RabbitMqAdminRolePolicy --policy-document file://policy.json
   ```

1. **Konfigurasikan pengaturan OAuth2 RabbitMQ**

   Buat file konfigurasi RabbitMQ dengan pengaturan OAuth2 otentikasi dan otorisasi:

   ```
   cat > rabbitmq.conf << EOF
   auth_backends.1 = oauth2
   auth_backends.2 = internal
   
   auth_oauth2.jwks_url = ${ISSUER_IDENTIFIER}/.well-known/jwks.json
   auth_oauth2.resource_server_id = rabbitmq
   auth_oauth2.scope_prefix = rabbitmq/
   
   auth_oauth2.additional_scopes_key = sub
   auth_oauth2.scope_aliases.1.alias = arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/RabbitMqAdminRole
   auth_oauth2.scope_aliases.1.scope = rabbitmq/tag:administrator rabbitmq/read:*/* rabbitmq/write:*/* rabbitmq/configure:*/*
   auth_oauth2.https.hostname_verification = wildcard
   
   management.oauth_enabled = true
   EOF
   ```

1. **Perbarui konfigurasi broker**

   Terapkan konfigurasi baru ke broker Anda:

   ```
   # Retrieve the configuration ID
   CONFIG_ID=$(aws mq describe-broker --broker-id $BROKER_ID --query 'Configurations[0].Id' --output text)
   
   # Create a new configuration revision
   REVISION=$(aws mq update-configuration --configuration-id $CONFIG_ID --data "$(cat rabbitmq.conf | base64 --wrap=0)" --query 'LatestRevision.Revision' --output text)
   
   # Apply the configuration to the broker
   aws mq update-broker --broker-id $BROKER_ID --configuration Id=$CONFIG_ID,Revision=$REVISION
   
   # Reboot the broker to apply changes
   aws mq reboot-broker --broker-id $BROKER_ID
   ```

   Tunggu status broker kembali `RUNNING` sebelum melanjutkan ke langkah berikutnya.

1. **Dapatkan token JWT**

   Asumsikan peran IAM dan dapatkan token identitas web:

   ```
   # Assume the RabbitMqAdminRole
   ROLE_CREDS=$(aws sts assume-role --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/RabbitMqAdminRole --role-session-name rabbitmq-session)
   
   # Configure the session with temporary credentials
   export AWS_ACCESS_KEY_ID=$(echo "$ROLE_CREDS" | jq -r '.Credentials.AccessKeyId')
   export AWS_SECRET_ACCESS_KEY=$(echo "$ROLE_CREDS" | jq -r '.Credentials.SecretAccessKey')
   export AWS_SESSION_TOKEN=$(echo "$ROLE_CREDS" | jq -r '.Credentials.SessionToken')
   
   # Obtain the web identity token
   TOKEN_RESPONSE=$(aws sts get-web-identity-token \
       --audience "rabbitmq" \
       --signing-algorithm ES384 \
       --duration-seconds 300 \
       --tags Key=scope,Value="rabbitmq/tag:administrator")
   
   # Extract the token
   TOKEN=$(echo "$TOKEN_RESPONSE" | jq -r '.WebIdentityToken')
   ```

1. **Akses API Manajemen RabbitMQ**

   Gunakan token JWT untuk mengakses API Manajemen RabbitMQ:

   ```
   BROKER_URL=<broker-id>.mq.<region>.on.aws
   
   curl -u ":$TOKEN" \
       -X GET https://${BROKER_URL}/api/overview \
       -H "Content-Type: application/json"
   ```

   Respons yang berhasil mengonfirmasi bahwa otentikasi IAM berfungsi dengan benar. Tanggapan tersebut berisi informasi ikhtisar broker dalam format JSON.

1. **Connect melalui AMQP menggunakan token JWT**

   Uji konektivitas AMQP menggunakan token JWT dengan alat uji sempurna:

   ```
   BROKER_DNS=<broker-endpoint>
   CONNECTION_STRING=amqps://:${TOKEN}@${BROKER_DNS}:5671
   
   docker run -it --rm --ulimit nofile=40960:40960 pivotalrabbitmq/perf-test:latest \
       --queue-pattern 'test-queue-%d' --queue-pattern-from 1 --queue-pattern-to 1 \
       --producers 1 --consumers 1 \
       --uri ${CONNECTION_STRING} \
       --flag persistent --rate 1
   ```

   Jika Anda menerima `ACCESS_REFUSED` kesalahan, Anda dapat memecahkan masalah pengaturan konfigurasi Anda dengan menggunakan CloudWatch log untuk broker Anda. Anda dapat menemukan tautan untuk grup CloudWatch log Log untuk broker Anda di konsol Amazon MQ.

# Menggunakan otentikasi dan otorisasi LDAP untuk Amazon MQ untuk RabbitMQ
<a name="rabbitmq-ldap-tutorial"></a>

Tutorial ini menjelaskan cara mengkonfigurasi otentikasi dan otorisasi LDAP untuk Amazon MQ Anda untuk broker RabbitMQ menggunakan. AWS Managed Microsoft AD

**Topics**
+ [Prasyarat untuk mengonfigurasi otentikasi dan otorisasi LDAP](#rabbitmq-ldap-tutorial-prerequisites)
+ [Mengkonfigurasi LDAP di RabbitMQ menggunakan CLI AWS](#rabbitmq-ldap-tutorial-configure-cli)

## Prasyarat untuk mengonfigurasi otentikasi dan otorisasi LDAP
<a name="rabbitmq-ldap-tutorial-prerequisites"></a>

Anda dapat mengatur AWS sumber daya yang diperlukan dalam tutorial ini dengan menerapkan [tumpukan AWS CDK untuk Amazon MQ untuk integrasi RabbitMQ LDAP](https://github.com/aws-samples/amazon-mq-samples/blob/main/rabbitmq-samples/rabbitmq-ldap-activedirectory-sample/) dengan. AWS Managed Microsoft AD

Tumpukan CDK ini secara otomatis membuat semua AWS sumber daya yang diperlukan termasuk AWS Managed Microsoft AD, pengguna dan grup LDAP, Network Load Balancer, sertifikat, dan peran IAM. Lihat paket README untuk daftar lengkap sumber daya yang dibuat oleh tumpukan.

Jika Anda menyiapkan sumber daya secara manual alih-alih menggunakan tumpukan CDK, pastikan Anda memiliki infrastruktur yang setara sebelum mengonfigurasi LDAP di Amazon MQ Anda untuk broker RabbitMQ.

### Prasyarat untuk mengatur Amazon MQ
<a name="rabbitmq-ldap-tutorial-prerequisite-cli"></a>

AWS Versi CLI >= 2.28.23 untuk membuat penambahan nama pengguna dan kata sandi opsional selama pembuatan broker.

## Mengkonfigurasi LDAP di RabbitMQ menggunakan CLI AWS
<a name="rabbitmq-ldap-tutorial-configure-cli"></a>

Prosedur ini menggunakan AWS CLI untuk membuat dan mengkonfigurasi sumber daya yang diperlukan. Dalam prosedur berikut, pastikan untuk mengganti nilai placeholder, seperti ConfigurationId dan Revision, `<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>` dan`<2>`, dengan nilai sebenarnya.

1. Buat konfigurasi baru menggunakan perintah `create-configuration` AWS CLI seperti yang ditunjukkan pada contoh berikut.

   ```
   aws mq create-configuration \
     --name "rabbitmq-ldap-config" \
     --engine-type "RABBITMQ" \
     --engine-version "3.13"
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
   "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "AuthenticationStrategy": "simple",
       "Created": "2025-07-17T16:03:01.759943+00:00",
       "Id": "c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "LatestRevision": {
   "Created": "2025-07-17T16:03:01.759000+00:00",
       "Description": "Auto-generated default for rabbitmq-ldap-config on RabbitMQ 3.13",
       "Revision": 1
       },
       "Name": "rabbitmq-ldap-config"
   }
   ```

1. Buat file konfigurasi yang dipanggil `rabbitmq.conf` untuk menggunakan LDAP sebagai metode otentikasi dan otorisasi, seperti yang ditunjukkan pada contoh berikut. Ganti semua nilai placeholder dalam template (ditandai dengan`${RabbitMqLdapTestStack.*}`) dengan nilai aktual dari output tumpukan AWS CDK prasyarat yang diterapkan atau infrastruktur yang setara.

   ```
   auth_backends.1 = ldap
   
   # LDAP authentication settings - For more information,
   # see https://www.rabbitmq.com/docs/ldap#basic
   
   # FIXME: Replace the ${RabbitMqLdapTestStack.*} placeholders with actual values
   # from your deployed prerequisite CDK stack outputs.
   auth_ldap.servers.1 = ${RabbitMqLdapTestStack.NlbDnsName}
   auth_ldap.dn_lookup_bind.user_dn = ${RabbitMqLdapTestStack.DnLookupUserDn}
   auth_ldap.dn_lookup_base = ${RabbitMqLdapTestStack.DnLookupBase}
   auth_ldap.dn_lookup_attribute = ${RabbitMqLdapTestStack.DnLookupAttribute}
   auth_ldap.port = 636
   auth_ldap.use_ssl = true
   auth_ldap.ssl_options.verify = verify_peer
   auth_ldap.log = network
   
   # AWS integration for secure credential retrieval
   # - see: https://github.com/amazon-mq/rabbitmq-aws
   # The aws plugin allows RabbitMQ to securely retrieve credentials and certificates
   # from AWS services.
   
   # Replace the ${RabbitMqLdapTestStack.*} placeholders with actual ARN values
   # from your deployed prerequisite CDK stack outputs.
   aws.arns.auth_ldap.ssl_options.cacertfile = ${RabbitMqLdapTestStack.CaCertArn}
   aws.arns.auth_ldap.dn_lookup_bind.password = ${RabbitMqLdapTestStack.DnLookupUserPasswordArn}
   aws.arns.assume_role_arn = ${RabbitMqLdapTestStack.AmazonMqAssumeRoleArn}
   
   # LDAP authorization queries - For more information,
   # see: https://www.rabbitmq.com/docs/ldap#authorisation
   
   # FIXME: Replace the ${RabbitMqLdapTestStack.*} placeholders with actual group DN
   # values from your deployed prerequisite CDK stack outputs
   # Uses Active Directory groups created by the prerequisite CDK stack
   auth_ldap.queries.tags = '''
   [{administrator, {in_group, "${RabbitMqLdapTestStack.RabbitMqAdministratorsGroupDn}"}},
   {management,    {in_group, "${RabbitMqLdapTestStack.RabbitMqMonitoringUsersGroupDn}"}}]
   '''
   
   # FIXME: This provides all authenticated users access to all vhosts
   # - update to restrict access as required
   auth_ldap.queries.vhost_access = '''
   {constant, true}
   '''
   
   # FIXME: This provides all authenticated users full access to all
   # queues and exchanges - update to restrict access as required
   auth_ldap.queries.resource_access = '''
   {for, [    {permission, configure, {constant, true}},
        {permission, write,
         {for, [{resource, queue,    {constant, true}},
                {resource, exchange, {constant, true}}]}},
        {permission, read,
         {for, [{resource, exchange, {constant, true}},
                {resource, queue,    {constant, true}}]}}
       ]
   }
   '''
   
   # FIXME: This provides all authenticated users access to all topics
   # - update to restrict access as required
   auth_ldap.queries.topic_access = '''
   {for, [{permission, write, {constant, true}},
        {permission, read,  {constant, true}}
       ]
   }
   '''
   ```

1. Perbarui konfigurasi menggunakan perintah `update-configuration` AWS CLI seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, tambahkan ID konfigurasi yang Anda terima sebagai respons Langkah 1 dari prosedur ini. Misalnya, `c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca`.

   ```
   aws mq update-configuration \
     --configuration-id "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>" \
     --data "$(cat rabbitmq.conf | base64 --wrap=0)"
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
       "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-b600ac8e-8183-4f74-a713-983e59f30e3d",
       "Created": "2025-07-17T16:57:04.520931+00:00",
       "Id": "c-b600ac8e-8183-4f74-a713-983e59f30e3d",
       "LatestRevision": {
           "Created": "2025-07-17T16:57:39.172000+00:00",
           "Revision": 2
       },
       "Name": "rabbitmq-ldap-config",
       "Warnings": []
   }
   ```

1. Buat broker dengan konfigurasi LDAP yang Anda buat di Langkah 2 prosedur ini. Untuk melakukan ini, gunakan perintah `create-broker` AWS CLI seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, berikan ID konfigurasi dan nomor revisi yang Anda peroleh dalam tanggapan Langkah 1 dan 2 masing-masing. Misalnya, `c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca` dan `2`.

   ```
   aws mq create-broker \
    --broker-name "rabbitmq-ldap-test-1" \
    --engine-type "RABBITMQ" \
    --engine-version "3.13" \
    --host-instance-type "mq.m7g.large" \
    --deployment-mode "CLUSTER_MULTI_AZ" \
    --logs '{"General": true}' \
    --publicly-accessible \
    --configuration '{"Id": "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>","Revision": <2>}'
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
       "BrokerArn": "arn:aws:mq:us-west-2:123456789012:broker:rabbitmq-ldap-broker:b-2a1b5133-a10c-49d2-879b-8c176c34cf73",
       "BrokerId": "b-2a1b5133-a10c-49d2-879b-8c176c34cf73"
   }
   ```
**Pembatasan penamaan broker**  
Peran IAM yang dibuat oleh tumpukan CDK prasyarat membatasi nama broker untuk memulai. `rabbitmq-ldap-test` Pastikan nama broker Anda mengikuti pola ini atau peran IAM tidak akan memiliki izin untuk mengambil peran untuk resolusi ARN.

1. Verifikasi bahwa status broker bertransisi dari `CREATION_IN_PROGRESS` ke`RUNNING`, menggunakan perintah `describe-broker` AWS CLI seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, berikan ID broker yang Anda peroleh dalam hasil langkah sebelumnya Misalnya,`b-2a1b5133-a10c-49d2-879b-8c176c34cf73`.

   ```
   aws mq describe-broker \
    --broker-id "<b-2a1b5133-a10c-49d2-879b-8c176c34cf73>"
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut. Respons berikut adalah versi singkat dari output lengkap yang dikembalikan `describe-broker` perintah. Tanggapan ini menunjukkan status broker dan strategi otentikasi yang digunakan untuk mengamankan broker. Dalam hal ini, strategi `config_managed` otentikasi menunjukkan bahwa broker menggunakan metode otentikasi LDAP.

   ```
   {
   "AuthenticationStrategy": "config_managed",
       ...,
       "BrokerState": "RUNNING",
       ...
   }
   ```

1. Validasi akses RabbitMQ menggunakan salah satu pengguna pengujian yang dibuat oleh tumpukan CDK prasyarat

   ```
   # FIXME: Replace ${RabbitMqLdapTestStack.ConsoleUserPasswordArn} with the actual ARN from your deployed prerequisite CDK stack outputs
   CONSOLE_PASSWORD=$(aws secretsmanager get-secret-value \
     --secret-id ${RabbitMqLdapTestStack.ConsoleUserPasswordArn} \
     --query 'SecretString' --output text)
   
   # FIXME: Replace BrokerConsoleURL with the actual ConsoleURL retrieved by
   # calling describe-broker for the broker created above
   # Call management API /api/overview (should succeed)
   curl -u RabbitMqConsoleUser:$CONSOLE_PASSWORD \
     https://${BrokerConsoleURL}/api/overview
   
   # Try to create a user (should fail - console user only has monitoring permissions)
   curl -u RabbitMqConsoleUser:$CONSOLE_PASSWORD \
     -X PUT https://${BrokerConsoleURL}/api/users/testuser \
     -H "Content-Type: application/json" \
     -d '{"password":"testpass","tags":"management"}'
   ```

# Menggunakan otentikasi HTTP dan otorisasi untuk Amazon MQ untuk RabbitMQ
<a name="rabbitmq-http-tutorial"></a>

Tutorial ini menjelaskan cara mengkonfigurasi otentikasi HTTP dan otorisasi untuk Amazon MQ Anda untuk broker RabbitMQ menggunakan server HTTP eksternal.

**catatan**  
Plugin otentikasi HTTP hanya tersedia untuk Amazon MQ untuk RabbitMQ versi 4 ke atas.

**Topics**
+ [Prasyarat untuk mengonfigurasi otentikasi dan otorisasi HTTP](#rabbitmq-http-tutorial-prerequisites)
+ [Mengkonfigurasi otentikasi HTTP di RabbitMQ menggunakan CLI AWS](#rabbitmq-http-tutorial-configure-cli)

## Prasyarat untuk mengonfigurasi otentikasi dan otorisasi HTTP
<a name="rabbitmq-http-tutorial-prerequisites"></a>

Anda dapat mengatur AWS sumber daya yang diperlukan dalam tutorial ini dengan menerapkan [tumpukan AWS CDK untuk Amazon MQ untuk integrasi otentikasi HTTP RabbitMQ](https://github.com/aws-samples/amazon-mq-samples/blob/main/rabbitmq-samples/rabbitmq-http-sample/).

Tumpukan CDK ini secara otomatis membuat semua AWS sumber daya yang diperlukan termasuk server otentikasi HTTP, sertifikat, dan peran IAM. Lihat paket README untuk daftar lengkap sumber daya yang dibuat oleh tumpukan.

Jika Anda menyiapkan sumber daya secara manual alih-alih menggunakan tumpukan CDK, pastikan Anda memiliki infrastruktur yang setara sebelum mengonfigurasi otentikasi HTTP di Amazon MQ Anda untuk broker RabbitMQ.

### Prasyarat untuk mengatur Amazon MQ
<a name="rabbitmq-http-tutorial-prerequisite-cli"></a>

AWS Versi CLI >= 2.28.23 untuk membuat penambahan nama pengguna dan kata sandi opsional selama pembuatan broker.

## Mengkonfigurasi otentikasi HTTP di RabbitMQ menggunakan CLI AWS
<a name="rabbitmq-http-tutorial-configure-cli"></a>

Prosedur ini menggunakan AWS CLI untuk membuat dan mengkonfigurasi sumber daya yang diperlukan. Dalam prosedur berikut, pastikan untuk mengganti nilai placeholder dengan nilai aktualnya.

1. Buat konfigurasi baru menggunakan perintah `create-configuration` AWS CLI seperti yang ditunjukkan pada contoh berikut.

   ```
   aws mq create-configuration \
     --name "rabbitmq-http-config" \
     --engine-type "RABBITMQ" \
     --engine-version "4.2"
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
       "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "AuthenticationStrategy": "simple",
       "Created": "2025-07-17T16:03:01.759943+00:00",
       "Id": "c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "LatestRevision": {
           "Created": "2025-07-17T16:03:01.759000+00:00",
           "Description": "Auto-generated default for rabbitmq-http-config on RabbitMQ 4.2",
           "Revision": 1
       },
       "Name": "rabbitmq-http-config"
   }
   ```

1. Buat file konfigurasi yang dipanggil `rabbitmq.conf` untuk menggunakan HTTP sebagai metode otentikasi dan otorisasi, seperti yang ditunjukkan pada contoh berikut. Ganti semua nilai placeholder dalam template (ditandai dengan`${...}`) dengan nilai aktual dari output tumpukan AWS CDK prasyarat yang diterapkan atau infrastruktur yang setara.

   ```
   auth_backends.1 = cache
   auth_backends.2 = http
   auth_cache.cached_backend = http
   
   # HTTP authentication settings
   # For more information, see https://github.com/rabbitmq/rabbitmq-auth-backend-http
   
   # FIXME: Replace the ${...} placeholders with actual values
   # from your deployed prerequisite CDK stack outputs.
   auth_http.http_method = post
   auth_http.user_path = ${HttpServerUserPath}
   auth_http.vhost_path = ${HttpServerVhostPath}
   auth_http.resource_path = ${HttpServerResourcePath}
   auth_http.topic_path = ${HttpServerTopicPath}
   
   # TLS/HTTPS configuration
   auth_http.ssl_options.verify = verify_peer
   auth_http.ssl_options.sni = test.amazonaws.com
   
   # AWS integration for secure credential retrieval
   # For more information, see https://github.com/amazon-mq/rabbitmq-aws
   
   # Replace the ${...} placeholders with actual ARN values
   # from your deployed prerequisite CDK stack outputs.
   aws.arns.assume_role_arn = ${AmazonMqAssumeRoleArn}
   aws.arns.auth_http.ssl_options.cacertfile = ${CaCertArn}
   ```

1. Perbarui konfigurasi menggunakan perintah `update-configuration` AWS CLI. Gunakan ID konfigurasi dari Langkah 3.

   ```
   aws mq update-configuration \
     --configuration-id "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>" \
     --data "$(cat rabbitmq.conf | base64 --wrap=0)"
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
       "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "Created": "2025-07-17T16:57:04.520931+00:00",
       "Id": "c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "LatestRevision": {
           "Created": "2025-07-17T16:57:39.172000+00:00",
           "Revision": 2
       },
       "Name": "rabbitmq-http-config",
       "Warnings": []
   }
   ```

1. Buat broker dengan konfigurasi HTTP. Gunakan ID konfigurasi dan nomor revisi dari langkah sebelumnya.

   ```
   aws mq create-broker \
     --broker-name "rabbitmq-http-test-1" \
     --engine-type "RABBITMQ" \
     --engine-version "4.2" \
     --host-instance-type "mq.m7g.large" \
     --deployment-mode "SINGLE_INSTANCE" \
     --logs '{"General": true}' \
     --publicly-accessible \
     --configuration '{"Id": "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>","Revision": <2>}'
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
       "BrokerArn": "arn:aws:mq:us-west-2:123456789012:broker:rabbitmq-http-test-1:b-2a1b5133-a10c-49d2-879b-8c176c34cf73",
       "BrokerId": "b-2a1b5133-a10c-49d2-879b-8c176c34cf73"
   }
   ```

1. Verifikasi bahwa status broker bertransisi dari `CREATION_IN_PROGRESS` ke`RUNNING`, menggunakan perintah `describe-broker` AWS CLI.

   ```
   aws mq describe-broker \
     --broker-id "<b-2a1b5133-a10c-49d2-879b-8c176c34cf73>"
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut. Strategi `config_managed` otentikasi menunjukkan bahwa broker menggunakan metode otentikasi HTTP.

   ```
   {
       "AuthenticationStrategy": "config_managed",
       ...,
       "BrokerState": "RUNNING",
       ...
   }
   ```

1. Validasi akses RabbitMQ menggunakan salah satu pengguna pengujian yang dibuat oleh tumpukan CDK prasyarat

   ```
   # FIXME: Replace ${RabbitMqHttpAuthElbStack.ConsoleUserPasswordArn} with the actual ARN from your deployed prerequisite CDK stack outputs
   CONSOLE_PASSWORD=$(aws secretsmanager get-secret-value \
     --secret-id ${RabbitMqHttpAuthElbStack.ConsoleUserPasswordArn} \
     --query 'SecretString' --output text)
   
   # FIXME: Replace BrokerConsoleURL with the actual ConsoleURL retrieved by
   # calling describe-broker for the broker created above
   # Call management API /api/overview (should succeed)
   curl -u RabbitMqConsoleUser:$CONSOLE_PASSWORD \
     https://${BrokerConsoleURL}/api/overview
   
   # Try to create a vhost (should fail - console user only has management permissions)
   curl -u RabbitMqConsoleUser:$CONSOLE_PASSWORD \
     -X PUT https://${BrokerConsoleURL}/api/vhosts/test-vhost \
     -H "Content-Type: application/json" \
     -d '{}'
   ```

# Menggunakan otentikasi sertifikat SSL untuk Amazon MQ untuk RabbitMQ
<a name="rabbitmq-ssl-tutorial"></a>

Tutorial ini menjelaskan cara mengonfigurasi otentikasi sertifikat SSL untuk Amazon MQ Anda untuk broker RabbitMQ menggunakan otoritas sertifikat pribadi.

**catatan**  
Plugin otentikasi sertifikat SSL hanya tersedia untuk Amazon MQ untuk RabbitMQ versi 4 ke atas.

**Topics**
+ [Prasyarat untuk mengonfigurasi otentikasi sertifikat SSL](#rabbitmq-ssl-tutorial-prerequisites)
+ [Mengkonfigurasi otentikasi sertifikat SSL di RabbitMQ menggunakan CLI AWS](#rabbitmq-ssl-tutorial-configure-cli)

## Prasyarat untuk mengonfigurasi otentikasi sertifikat SSL
<a name="rabbitmq-ssl-tutorial-prerequisites"></a>

Otentikasi sertifikat SSL menggunakan TLS bersama (mTLS) untuk mengautentikasi klien menggunakan sertifikat X.509. Anda dapat mengatur AWS sumber daya yang diperlukan dalam tutorial ini dengan menerapkan [tumpukan AWS CDK untuk Amazon MQ untuk integrasi MTLS RabbitMQ](https://github.com/aws-samples/amazon-mq-samples/blob/main/rabbitmq-samples/rabbitmq-mtls-sample/).

Tumpukan CDK ini secara otomatis membuat semua AWS sumber daya yang diperlukan termasuk otoritas sertifikat, sertifikat klien, dan peran IAM. Lihat paket README untuk daftar lengkap sumber daya yang dibuat oleh tumpukan.

**catatan**  
Sebelum menerapkan tumpukan CDK, atur variabel `RABBITMQ_TEST_USER_NAME` lingkungan. Nilai ini akan digunakan sebagai Nama Umum (CN) dalam sertifikat klien dan harus sesuai dengan nama pengguna yang Anda gunakan dalam langkah-langkah tutorial. Misalnya: `export RABBITMQ_TEST_USER_NAME="myuser"`

Jika Anda menyiapkan sumber daya secara manual alih-alih menggunakan tumpukan CDK, pastikan Anda memiliki infrastruktur yang setara sebelum mengonfigurasi otentikasi sertifikat SSL di Amazon MQ Anda untuk broker RabbitMQ.

### Prasyarat untuk mengatur Amazon MQ
<a name="rabbitmq-ssl-tutorial-prerequisite-cli"></a>

AWS Versi CLI >= 2.28.23 untuk membuat penambahan nama pengguna dan kata sandi opsional selama pembuatan broker.

## Mengkonfigurasi otentikasi sertifikat SSL di RabbitMQ menggunakan CLI AWS
<a name="rabbitmq-ssl-tutorial-configure-cli"></a>

Prosedur ini menggunakan AWS CLI untuk membuat dan mengkonfigurasi sumber daya yang diperlukan. Dalam prosedur berikut, pastikan untuk mengganti nilai placeholder, seperti ConfigurationId dan Revision, `<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>` dan`<2>`, dengan nilai sebenarnya.

1. Buat konfigurasi baru menggunakan perintah `create-configuration` AWS CLI seperti yang ditunjukkan pada contoh berikut.

   ```
   aws mq create-configuration \
     --name "rabbitmq-ssl-config" \
     --engine-type "RABBITMQ" \
     --engine-version "4.2"
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
       "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "AuthenticationStrategy": "simple",
       "Created": "2025-07-17T16:03:01.759943+00:00",
       "Id": "c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "LatestRevision": {
           "Created": "2025-07-17T16:03:01.759000+00:00",
           "Description": "Auto-generated default for rabbitmq-ssl-config on RabbitMQ 4.2",
           "Revision": 1
       },
       "Name": "rabbitmq-ssl-config"
   }
   ```

1. Buat file konfigurasi yang dipanggil `rabbitmq.conf` untuk menggunakan otentikasi sertifikat SSL, seperti yang ditunjukkan pada contoh berikut. Ganti semua nilai placeholder dalam template (ditandai dengan`${...}`) dengan nilai aktual dari output tumpukan AWS CDK prasyarat yang diterapkan atau infrastruktur yang setara.

   ```
   auth_mechanisms.1 = EXTERNAL
   ssl_cert_login_from = common_name
   
   auth_backends.1 = internal
   
   # Reject if no client cert
   ssl_options.verify = verify_peer
   ssl_options.fail_if_no_peer_cert = true
   
   # AWS integration for secure credential retrieval
   # For more information, see https://github.com/amazon-mq/rabbitmq-aws
   
   # FIXME: Replace the ${...} placeholders with actual ARN values
   # from your deployed prerequisite CDK stack outputs.
   aws.arns.assume_role_arn = ${AmazonMqAssumeRoleArn}
   aws.arns.ssl_options.cacertfile = ${CaCertArn}
   ```

1. Perbarui konfigurasi menggunakan perintah `update-configuration` AWS CLI seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, tambahkan ID konfigurasi yang Anda terima sebagai respons Langkah 1 dari prosedur ini. Misalnya, `c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca`.

   ```
   aws mq update-configuration \
     --configuration-id "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>" \
     --data "$(cat rabbitmq.conf | base64 --wrap=0)"
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
       "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "Created": "2025-07-17T16:57:04.520931+00:00",
       "Id": "c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "LatestRevision": {
           "Created": "2025-07-17T16:57:39.172000+00:00",
           "Revision": 2
       },
       "Name": "rabbitmq-ssl-config",
       "Warnings": []
   }
   ```

1. Buat broker dengan konfigurasi otentikasi sertifikat SSL yang Anda buat di Langkah 2 prosedur ini. Untuk melakukan ini, gunakan perintah `create-broker` AWS CLI seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, berikan ID konfigurasi dan nomor revisi yang Anda peroleh dalam tanggapan Langkah 1 dan 2 masing-masing. Misalnya, `c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca` dan `2`.

   ```
   aws mq create-broker \
     --broker-name "rabbitmq-ssl-test-1" \
     --engine-type "RABBITMQ" \
     --engine-version "4.2" \
     --host-instance-type "mq.m7g.large" \
     --deployment-mode "SINGLE_INSTANCE" \
     --logs '{"General": true}' \
     --publicly-accessible \
     --configuration '{"Id": "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>","Revision": <2>}' \
     --users '[{"Username":"testuser","Password":"testpassword"}]'
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
       "BrokerArn": "arn:aws:mq:us-west-2:123456789012:broker:rabbitmq-ssl-test-1:b-2a1b5133-a10c-49d2-879b-8c176c34cf73",
       "BrokerId": "b-2a1b5133-a10c-49d2-879b-8c176c34cf73"
   }
   ```

1. Verifikasi bahwa status broker bertransisi dari `CREATION_IN_PROGRESS` ke`RUNNING`, menggunakan perintah `describe-broker` AWS CLI seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, berikan ID broker yang Anda peroleh pada hasil langkah sebelumnya. Misalnya, `b-2a1b5133-a10c-49d2-879b-8c176c34cf73`.

   ```
   aws mq describe-broker \
     --broker-id "<b-2a1b5133-a10c-49d2-879b-8c176c34cf73>"
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut. Respons berikut adalah versi singkat dari output lengkap yang dikembalikan `describe-broker` perintah. Tanggapan ini menunjukkan status broker dan strategi otentikasi yang digunakan untuk mengamankan broker. Dalam hal ini, strategi `config_managed` otentikasi menunjukkan bahwa broker menggunakan metode otentikasi sertifikat SSL.

   ```
   {
       "AuthenticationStrategy": "config_managed",
       ...,
       "BrokerState": "RUNNING",
       ...
   }
   ```

1. Verifikasi otentikasi sertifikat SSL dengan skrip berikut`ssl.sh`.

   Gunakan skrip bash ini untuk menguji konektivitas ke Amazon MQ Anda untuk broker RabbitMQ. Skrip ini menggunakan sertifikat klien Anda untuk otentikasi dan memverifikasi apakah koneksi telah dikonfigurasi dengan benar. Jika berhasil dikonfigurasi, Anda akan melihat broker Anda mempublikasikan dan menggunakan pesan.

   Jika Anda menerima `ACCESS_REFUSED` kesalahan, Anda dapat memecahkan masalah pengaturan konfigurasi Anda dengan menggunakan CloudWatch log untuk broker Anda. Anda dapat menemukan tautan untuk grup CloudWatch log untuk broker Anda di konsol Amazon MQ.

   Dalam skrip ini, Anda harus memberikan nilai-nilai berikut:
   + `USERNAME`Nama umum (CN) dari sertifikat klien Anda.
   + `CLIENT_KEYSTORE`: Jalur ke file keystore klien Anda (PKCS12 format). Jika Anda menggunakan tumpukan CDK prasyarat, jalur defaultnya adalah. `$(pwd)/certs/client-keystore.p12`
   + `KEYSTORE_PASSWORD`: Kata sandi untuk keystore klien Anda. Jika Anda menggunakan tumpukan CDK prasyarat, kata sandi defaultnya adalah. `changeit`
   + `BROKER_DNS`: Anda dapat menemukan nilai ini di bawah **Koneksi** di halaman detail broker konsol Amazon MQ.

   ```
   #! /bin/bash
   set -e
   
   # Client information
   ## FIXME: Update this value with the client ID and secret of your confidential application client
   USERNAME=<client_cert_common_name>
   CLIENT_KEYSTORE=$(pwd)/certs/client-keystore.p12
   KEYSTORE_PASSWORD=changeit
   
   BROKER_DNS=<broker_dns>
   CONNECTION_STRING=amqps://${BROKER_DNS}:5671 
   
   # Produce/consume messages using the above connection string
   QUEUES_COUNT=1
   PRODUCERS_COUNT=1
   CONSUMERS_COUNT=1
   PRODUCER_RATE=1
   
   finch run --rm --ulimit nofile=40960:40960 \
       -v ${CLIENT_KEYSTORE}:/certs/client-keystore.p12:ro \
       -e JAVA_TOOL_OPTIONS="-Djavax.net.ssl.keyStore=/certs/client-keystore.p12 -Djavax.net.ssl.keyStorePassword=${KEYSTORE_PASSWORD} -Djavax.net.ssl.keyStoreType=PKCS12" \
       pivotalrabbitmq/perf-test:latest \
       --queue-pattern 'test-queue-cert-%d' --queue-pattern-from 1 --queue-pattern-to $QUEUES_COUNT \
       --producers $PRODUCERS_COUNT --consumers $CONSUMERS_COUNT \
       --id "cert-test${QUEUES_COUNT}q${PRODUCERS_COUNT}p${CONSUMERS_COUNT}c${PRODUCER_RATE}r" \
       --uri ${CONNECTION_STRING} \
       --sasl-external \
       --use-default-ssl-context \
       --flag persistent --rate $PRODUCER_RATE
   ```

# Menggunakan mTL untuk AMQP dan endpoint manajemen
<a name="rabbitmq-mtls-tutorial"></a>

Tutorial ini menjelaskan cara mengkonfigurasi TLS bersama (mTLS) untuk koneksi klien AMQP dan antarmuka manajemen RabbitMQ menggunakan otoritas sertifikat pribadi.

**catatan**  
Penggunaan otoritas sertifikat swasta untuk mTLS hanya tersedia untuk Amazon MQ untuk RabbitMQ versi 4 ke atas.

**Topics**
+ [Prasyarat untuk mengkonfigurasi mTL](#rabbitmq-mtls-tutorial-prerequisites)
+ [Mengkonfigurasi MTL di RabbitMQ menggunakan CLI AWS](#rabbitmq-mtls-tutorial-configure-cli)

## Prasyarat untuk mengkonfigurasi mTL
<a name="rabbitmq-mtls-tutorial-prerequisites"></a>

Anda dapat mengatur AWS sumber daya yang diperlukan dalam tutorial ini dengan menerapkan [tumpukan AWS CDK untuk Amazon MQ untuk integrasi RabbitMQ MTLS](https://github.com/aws-samples/amazon-mq-samples/blob/main/rabbitmq-samples/rabbitmq-mtls-sample/) dengan.

Tumpukan CDK ini secara otomatis membuat semua AWS sumber daya yang diperlukan termasuk otoritas sertifikat, sertifikat klien, dan peran IAM. Lihat paket README untuk daftar lengkap sumber daya yang dibuat oleh tumpukan.

Jika Anda menyiapkan sumber daya secara manual alih-alih menggunakan tumpukan CDK, pastikan Anda memiliki infrastruktur yang setara sebelum mengonfigurasi mTL di Amazon MQ Anda untuk broker RabbitMQ.

### Prasyarat untuk mengatur Amazon MQ
<a name="rabbitmq-mtls-tutorial-prerequisite-cli"></a>

AWS Versi CLI >= 2.28.23 untuk membuat penambahan nama pengguna dan kata sandi opsional selama pembuatan broker.

## Mengkonfigurasi MTL di RabbitMQ menggunakan CLI AWS
<a name="rabbitmq-mtls-tutorial-configure-cli"></a>

Prosedur ini menggunakan AWS CLI untuk membuat dan mengkonfigurasi sumber daya yang diperlukan. Dalam prosedur berikut, pastikan untuk mengganti nilai placeholder, seperti ConfigurationId dan Revision, `<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>` dan`<2>`, dengan nilai sebenarnya.

1. Buat konfigurasi baru menggunakan perintah `create-configuration` AWS CLI seperti yang ditunjukkan pada contoh berikut.

   ```
   aws mq create-configuration \
     --name "rabbitmq-mtls-config" \
     --engine-type "RABBITMQ" \
     --engine-version "4.2"
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
       "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "AuthenticationStrategy": "simple",
       "Created": "2025-07-17T16:03:01.759943+00:00",
       "Id": "c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "LatestRevision": {
           "Created": "2025-07-17T16:03:01.759000+00:00",
           "Description": "Auto-generated default for rabbitmq-mtls-config on RabbitMQ 4.2",
           "Revision": 1
       },
       "Name": "rabbitmq-mtls-config"
   }
   ```

1. Buat file konfigurasi yang dipanggil `rabbitmq.conf` untuk mengkonfigurasi mTL untuk AMQP dan endpoint manajemen, seperti yang ditunjukkan pada contoh berikut. Ganti semua nilai placeholder dalam template (ditandai dengan`${...}`) dengan nilai aktual dari output tumpukan AWS CDK prasyarat yang diterapkan atau infrastruktur yang setara.

   ```
   auth_backends.1 = internal
   
   # TLS configuration
   ssl_options.verify = verify_peer
   ssl_options.fail_if_no_peer_cert = true
   management.ssl.verify = verify_peer
   
   # AWS integration for secure credential retrieval
   # For more information, see https://github.com/amazon-mq/rabbitmq-aws
   
   # FIXME: Replace the ${...} placeholders with actual ARN values
   # from your deployed prerequisite CDK stack outputs.
   aws.arns.assume_role_arn = ${AmazonMqAssumeRoleArn}
   aws.arns.ssl_options.cacertfile = ${CaCertArn}
   aws.arns.management.ssl.cacertfile = ${CaCertArn}
   ```

1. Perbarui konfigurasi menggunakan perintah `update-configuration` AWS CLI seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, tambahkan ID konfigurasi yang Anda terima sebagai respons Langkah 1 dari prosedur ini. Misalnya, `c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca`.

   ```
   aws mq update-configuration \
     --configuration-id "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>" \
     --data "$(cat rabbitmq.conf | base64 --wrap=0)"
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
       "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "Created": "2025-07-17T16:57:04.520931+00:00",
       "Id": "c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca",
       "LatestRevision": {
           "Created": "2025-07-17T16:57:39.172000+00:00",
           "Revision": 2
       },
       "Name": "rabbitmq-mtls-config",
       "Warnings": []
   }
   ```

1. Buat broker dengan konfigurasi mTLS yang Anda buat di Langkah 2 dari prosedur ini. Untuk melakukan ini, gunakan perintah `create-broker` AWS CLI seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, berikan ID konfigurasi dan nomor revisi yang Anda peroleh dalam tanggapan Langkah 1 dan 2 masing-masing. Misalnya, `c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca` dan `2`.

   ```
   aws mq create-broker \
     --broker-name "rabbitmq-mtls-test-1" \
     --engine-type "RABBITMQ" \
     --engine-version "4.2" \
     --host-instance-type "mq.m7g.large" \
     --deployment-mode "SINGLE_INSTANCE" \
     --logs '{"General": true}' \
     --publicly-accessible \
     --configuration '{"Id": "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>","Revision": <2>}' \
     --users '[{"Username":"testuser","Password":"testpassword"}]'
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
       "BrokerArn": "arn:aws:mq:us-west-2:123456789012:broker:rabbitmq-mtls-test-1:b-2a1b5133-a10c-49d2-879b-8c176c34cf73",
       "BrokerId": "b-2a1b5133-a10c-49d2-879b-8c176c34cf73"
   }
   ```

1. Verifikasi bahwa status broker bertransisi dari `CREATION_IN_PROGRESS` ke`RUNNING`, menggunakan perintah `describe-broker` AWS CLI seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, berikan ID broker yang Anda peroleh pada hasil langkah sebelumnya. Misalnya, `b-2a1b5133-a10c-49d2-879b-8c176c34cf73`.

   ```
   aws mq describe-broker \
     --broker-id "<b-2a1b5133-a10c-49d2-879b-8c176c34cf73>"
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut. Respons berikut adalah versi singkat dari output lengkap yang dikembalikan `describe-broker` perintah.

   ```
   {
       "AuthenticationStrategy": "simple",
       ...,
       "BrokerState": "RUNNING",
       ...
   }
   ```

1. Verifikasi otentikasi mTLS dengan skrip berikut`mtls.sh`.

   Gunakan skrip bash ini untuk menguji konektivitas ke Amazon MQ Anda untuk broker RabbitMQ. Skrip ini menggunakan sertifikat klien Anda untuk mengautentikasi dan memverifikasi apakah koneksi telah dikonfigurasi dengan benar. Jika berhasil dikonfigurasi, Anda akan melihat broker Anda mempublikasikan dan menggunakan pesan.

   Jika Anda menerima `ACCESS_REFUSED` kesalahan, Anda dapat memecahkan masalah pengaturan konfigurasi Anda dengan menggunakan CloudWatch log untuk broker Anda. Anda dapat menemukan tautan untuk grup CloudWatch log untuk broker Anda di konsol Amazon MQ.

   Dalam skrip ini, Anda harus memberikan nilai-nilai berikut:
   + `USERNAME`dan`PASSWORD`: Kredensyal pengguna RabbitMQ yang Anda buat dengan broker.
   + `CLIENT_KEYSTORE`: Jalur ke file keystore klien Anda (PKCS12 format). Jika Anda menggunakan tumpukan CDK prasyarat, jalur defaultnya adalah. `$(pwd)/certs/client-keystore.p12`
   + `KEYSTORE_PASSWORD`: Kata sandi untuk keystore klien Anda. Jika Anda menggunakan tumpukan CDK prasyarat, kata sandi defaultnya adalah. `changeit`
   + `BROKER_DNS`: Anda dapat menemukan nilai ini di bawah **Koneksi** di halaman detail broker konsol Amazon MQ.

   ```
   #! /bin/bash
   set -e
   
   # Client information
   ## FIXME: Update this value with the client ID and secret of your confidential application client
   USERNAME=<testuser>
   PASSWORD=<testpassword>
   CLIENT_KEYSTORE=$(pwd)/certs/client-keystore.p12
   KEYSTORE_PASSWORD=changeit
   
   BROKER_DNS=<broker_dns>
   CONNECTION_STRING=amqps://${USERNAME}:${PASSWORD}@${BROKER_DNS}:5671 
   
   # Produce/consume messages using the above connection string
   QUEUES_COUNT=1
   PRODUCERS_COUNT=1
   CONSUMERS_COUNT=1
   PRODUCER_RATE=1
   
   finch run --rm --ulimit nofile=40960:40960 \
       -v ${CLIENT_KEYSTORE}:/certs/client-keystore.p12:ro \
       -e JAVA_TOOL_OPTIONS="-Djavax.net.ssl.keyStore=/certs/client-keystore.p12 -Djavax.net.ssl.keyStorePassword=${KEYSTORE_PASSWORD} -Djavax.net.ssl.keyStoreType=PKCS12" \
       pivotalrabbitmq/perf-test:latest \
       --queue-pattern 'test-queue-cert-%d' --queue-pattern-from 1 --queue-pattern-to $QUEUES_COUNT \
       --producers $PRODUCERS_COUNT --consumers $CONSUMERS_COUNT \
       --id "cert-test${QUEUES_COUNT}q${PRODUCERS_COUNT}p${CONSUMERS_COUNT}c${PRODUCER_RATE}r" \
       --uri ${CONNECTION_STRING} \
       --use-default-ssl-context \
       --flag persistent --rate $PRODUCER_RATE
   ```

# Menghubungkan aplikasi JMS Anda
<a name="rabbitmq-tutorial-jms"></a>

 Tutorial ini menunjukkan cara menghubungkan aplikasi JMS Anda ke Amazon MQ untuk broker RabbitMQ menggunakan klien RabbitMQ JMS. Anda akan belajar cara membuat produser untuk mengirim pesan dan konsumen untuk menerima pesan dari antrian RabbitMQ. 

 Sebelum Anda mulai, tambahkan dependensi RabbitMQ JMS yang sesuai ke proyek Maven Anda: 

 Untuk JMS 1.1 dan 2.0: 

```
<dependencies>

  <dependency>
    <groupId>com.rabbitmq.jms</groupId>
    <artifactId>rabbitmq-jms</artifactId>
    <version>2.12.0</version>
  </dependency>

</dependencies>
```

 Untuk JMS 3.1: 

```
<dependencies>

  <dependency>
    <groupId>com.rabbitmq.jms</groupId>
    <artifactId>rabbitmq-jms</artifactId>
    <version>3.5.0</version>
  </dependency>

</dependencies>
```

## Buat produser
<a name="rabbitmq-tutorial-jms-producer"></a>

 Contoh kode berikut menunjukkan cara menulis ke antrian RabbitMQ menggunakan JMS: 

```
import jakarta.jms.*;
import com.rabbitmq.jms.admin.*;

// Setting the connection factory
RMQConnectionFactory factory = new RMQConnectionFactory();
factory.setHost(envProps.getProperty("RABBITMQ_HOST", "localhost"));
factory.setPort(Integer.parseInt(envProps.getProperty("RABBITMQ_PORT", "5672")));
factory.setUsername(envProps.getProperty("RABBITMQ_USERNAME", "guest"));
factory.setPassword(envProps.getProperty("RABBITMQ_PASSWORD", "guest"));
factory.setVirtualHost(envProps.getProperty("RABBITMQ_VIRTUAL_HOST", "/"));
factory.useSslProtocol();

connection = factory.createConnection();
connection.start();

String queueName = "test-queue-jms";
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

RMQDestination destination = new RMQDestination(queueName, true, false);

// Send the message to the queue
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);

String msg_content = "Hello World!!";
TextMessage textMessage = session.createTextMessage(msg_content);
producer.send(textMessage);

System.out.printf("Published to AMQP queue '%s': %s", queueName, msg_content);
```

## Ciptakan konsumen
<a name="rabbitmq-tutorial-jms-consumer"></a>

 Contoh kode berikut menunjukkan cara membaca dari antrian RabbitMQ menggunakan JMS: 

```
import jakarta.jms.*;
import com.rabbitmq.jms.admin.*;

// Setting the connection factory
RMQConnectionFactory factory = new RMQConnectionFactory();
factory.setHost(envProps.getProperty("RABBITMQ_HOST", "localhost"));
factory.setPort(Integer.parseInt(envProps.getProperty("RABBITMQ_PORT", "5672")));
factory.setUsername(envProps.getProperty("RABBITMQ_USERNAME", "guest"));
factory.setPassword(envProps.getProperty("RABBITMQ_PASSWORD", "guest"));
factory.setVirtualHost(envProps.getProperty("RABBITMQ_VIRTUAL_HOST", "/"));
factory.useSslProtocol();

// Establish the connection and session
jakarta.jms.Connection connection = factory.createConnection();

String queueName = "test-queue-jms";
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

RMQDestination destination = new RMQDestination();
destination.setDestinationName(queueName);
destination.setAmqp(true);
destination.setAmqpQueueName(queueName);

// Initialize consumer
MessageConsumer consumer = session.createConsumer(destination);
consumer.setMessageListener(message -> {
    try {
        if (message instanceof TextMessage) {
            TextMessage textMessage = (TextMessage) message;
            System.out.printf("Message: %s%n", textMessage.getText());
        } else if (message instanceof BytesMessage) {
            BytesMessage bytesMessage = (BytesMessage) message;
            byte[] bytes = new byte[(int) bytesMessage.getBodyLength()];
            bytesMessage.readBytes(bytes);
            String content = new String(bytes);
            System.out.printf("Message: %s%n", content);
        } else {
            System.out.printf("Message: [%s]%n", message.getClass().getSimpleName());
        }
    } catch (JMSException e) {
        System.err.printf("Error processing message: %s%n", e.getMessage());
    }
});

connection.start();
```