Memulai: Membuat dan menghubungkan ke broker RabbitMQ - Amazon MQ

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

Memulai: Membuat dan menghubungkan ke broker RabbitMQ

Broker adalah lingkungan broker pesan yang berjalan di Amazon MQ. Ini adalah blok bangunan dasar Amazon MQ. Deskripsi gabungan dari instans broker kelas (m5, t3) dan ukuran (large, micro) adalah tipe instans broker (misalnya, mq.m5.large). Untuk informasi selengkapnya, silakan lihat Apa itu Amazon MQ untuk broker RabbitMQ?

Langkah 1: Buat broker RabbitMQ

Tugas Amazon MQ yang pertama dan paling umum adalah membuat broker. Contoh berikut menunjukkan bagaimana Anda dapat menggunakan AWS Management Console untuk membuat broker dasar.

  1. Masuk ke konsol Amazon MQ.

  2. Di halaman Pilih mesin broker, pilih RabbitMQ, lalu pilih Selanjutnya.

  3. Di halaman Pilih mode deployment, pilih Mode deployment, misalnya, Deployment klaster, lalu pilih Selanjutnya.

    • 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 EBS penyimpanan Amazon. Untuk informasi selengkapnya, lihat Opsi 1: Amazon MQ untuk broker instans tunggal RabbitMQ.

    • Deployment klaster RabbitMQ untuk ketersediaan tinggi 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 selengkapnya, lihat Opsi 2: Amazon MQ untuk penyebaran cluster RabbitMQ.

  4. Di halaman Konfigurasi pengaturan, pada bagian Detail, lakukan hal berikut:

    1. Masukkan nama Broker.

      penting

      Jangan menambahkan informasi identitas pribadi (PII) atau informasi rahasia atau sensitif lainnya dalam nama broker. Nama broker dapat diakses oleh AWS layanan lain, termasuk CloudWatch Log. Nama broker tidak dimaksudkan untuk digunakan untuk data pribadi atau sensitif.

    2. Pilih Tipe instans broker (misalnya, mq.m5.large). Untuk informasi selengkapnya, lihat Broker instance types.

    catatan

    Bagian Pengaturan tambahan menyediakan opsi untuk mengaktifkan CloudWatch log dan mengonfigurasi akses jaringan untuk broker Anda. Jika Anda membuat broker RabbitMQ pribadi tanpa aksesibilitas publik, Anda harus memilih Virtual Private Cloud (VPC) dan mengonfigurasi grup keamanan untuk mengakses broker Anda.

  5. Di halaman Konfigurasi pengaturan, pada bagian Akses RabbitMQ, berikan Nama pengguna dan Kata sandi. Pembatasan berikut berlaku untuk kredensi masuk broker:

    • Nama pengguna Anda hanya dapat berisi karakter alfanumerik, tanda hubung, titik, dan garis bawah (- . _). Nilai ini tidak boleh berisi karakter tilde (~). Amazon MQ melarang penggunaan guest sebagai nama pengguna.

    • Kata sandi Anda setidaknya harus terdiri dari 12 karakter, berisi setidaknya 4 karakter unik, dan tidak boleh berisi koma, titik dua, atau tanda yang sama (,:=).

    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.

  6. Pilih Berikutnya.

  7. Di halaman Tinjau dan buat, Anda dapat meninjau pilihan dan mengeditnya sesuai kebutuhan.

  8. Pilih Buat broker.

    Status Pembuatan sedang berlangsung ditampilkan saat Amazon MQ membuat broker Anda.

    Pembuatan broker berlangsung sekitar 15 menit.

    Saat broker berhasil dibuat, Amazon MQ menampilkan status Berjalan.

  9. Pilih MyBroker.

    Pada MyBrokerhalaman, di bagian Connect, perhatikan konsol web RabbitMQ broker AndaURL, misalnya:

    https://b-c8349341-ec91-4a78-ad9c-a57f23f235bb.mq.us-west-2.amazonaws.com

    Juga, perhatikan AMQPtitik akhir aman broker Anda. Berikut adalah contoh titik akhir amqps yang mengekspos port listener 5671.

    amqps://b-c8349341-ec91-4a78-ad9c-a57f23f235bb.mq.us-west-2.amazonaws.com:5671

Langkah 2: Hubungkan aplikasi JVM berbasis ke broker Anda

Setelah membuat broker RabbitMQ, Anda dapat menghubungkan aplikasi ke broker. Contoh berikut menunjukkan cara menggunakan Pustaka klien RabbitMQ Java 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 dan alat developer.

Prasyarat

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.

Aktifkan VPC atribut

Untuk memastikan bahwa broker Anda dapat diakses di dalam AndaVPC, Anda harus mengaktifkan enableDnsHostnames dan enableDnsSupport VPC atribut. Untuk informasi selengkapnya, lihat DNSSupport VPC di Panduan VPC Pengguna Amazon.

Mengaktifkan koneksi masuk

  1. Masuk ke konsol Amazon MQ.

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

  3. Pada MyBrokerhalaman, di bagian Koneksi, perhatikan alamat dan port konsol web broker URL dan protokol tingkat kabel.

  4. Di bagian Detail, di bawah Keamanan dan jaringan, pilih nama grup keamanan Anda atau Pencil icon indicating an edit or modification action. .

    Halaman Grup Keamanan EC2 Dasbor ditampilkan.

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

  6. Di bagian bawah halaman, pilih tab Masuk, lalu pilih Edit.

  7. Dalam kotak dialog Edit aturan masuk, tambahkan aturan untuk setiap URL atau titik akhir yang ingin Anda akses publik (contoh berikut menunjukkan cara melakukannya untuk konsol web broker).

    1. Pilih Tambahkan aturan.

    2. Untuk Jenis, pilih Kustom TCP.

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

    4. Pilih Simpan.

      Broker Anda kini dapat menerima koneksi masuk.

Menambahkan dependensi Java

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 file. POM

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

Jika Anda menggunakan Gradle untuk mengotomatisasi build, nyatakan dependensi berikut.

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

Mengimpor kelas Connection dan Channel

Klien RabbitMQ Java menggunakan com.rabbitmq.client sebagai paket tingkat atas, dengan Connection dan Channel API kelas mewakili koneksi dan saluran AMQP 0-9-1, masing-masing. 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

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

Anda dapat menggunakan Channel.basicPublish untuk memublikasikan pesan ke pertukaran. Contoh berikut menggunakan AMQP Builder kelas untuk membangun objek properti pesan dengan content-typeplain/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

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

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 Klien Java RabbitMQ. API

Langkah 3: (Opsional) Connect ke AWS Lambda fungsi

AWS Lambda dapat terhubung ke dan mengkonsumsi pesan dari broker Amazon MQ Anda. Saat Anda menghubungkan broker ke Lambda, Anda membuat pemetaan sumber peristiwa yang membaca pesan dari antrian dan memanggil fungsi secara sinkron. 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 IAM peran berikut ke peran eksekusi fungsi Lambda Anda.

    catatan

    Tanpa IAM izin yang diperlukan, fungsi Anda tidak akan berhasil membaca catatan dari sumber daya Amazon MQ.

  2. (Opsional) Jika Anda telah membuat broker tanpa aksesibilitas publik, Anda harus melakukan salah satu hal berikut untuk memungkinkan Lambda terhubung ke broker Anda:

  3. Konfigurasikan broker Anda sebagai sumber acara untuk fungsi Lambda menggunakan. AWS Management Console Anda juga dapat menggunakan create-event-source-mapping AWS Command Line Interface perintah.

  4. Tulis beberapa kode untuk fungsi Lambda Anda untuk memproses pesan dari yang Anda konsumsi dari broker Anda. Payload Lambda yang diambil oleh pemetaan sumber peristiwa 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 bawahtest::/.

    { "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==" } ] } }

Untuk informasi selengkapnya tentang menghubungkan Amazon MQ ke Lambda, opsi yang didukung Lambda untuk sumber peristiwa Amazon MQ, dan kesalahan pemetaan sumber peristiwa, lihat Menggunakan Lambda dengan Amazon MQ di Panduan Pengembang.AWS Lambda