Membuat dan menghubungkan ke broker ActiveMQ - Amazon MQ

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

Membuat dan menghubungkan ke broker ActiveMQ

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, lihat Pialang.

Langkah 1: membuat broker ActiveMQ

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 Apache ActiveMQ.

  3. Di halaman Pilih deployment dan penyimpanan, pada bagian Mode deployment dan jenis penyimpanan, lakukan hal berikut:

    1. Pilih Mode deployment (misalnya, Broker aktif/siaga). Untuk informasi selengkapnya, lihat Broker Architecture.

      • Broker Single-instance terdiri dari satu broker dalam satu Availability Zone. Broker berkomunikasi dengan aplikasi Anda dan dengan volume penyimpanan Amazon EBS atau Amazon EFS. Untuk informasi selengkapnya, lihat Broker instans tunggal Amazon MQ.

      • Broker aktif/siaga untuk ketersediaan tinggi terdiri dari dua broker di dua Availability Zone yang berbeda, dikonfigurasi dalam pasangan redundan. Broker ini berkomunikasi secara sinkron dengan aplikasi Anda dan Amazon EFS. Untuk informasi selengkapnya, lihat Broker aktif/siaga Amazon MQ untuk ketersediaan tinggi.

      • Untuk informasi selengkapnya tentang cetak biru sampel jaringan broker, lihat Cetak biru sampel.

    2. Pilih Jenis penyimpanan (misalnya, EBS). Untuk informasi selengkapnya, lihat Storage.

      catatan

      Amazon EBS mereplikasi data dalam satu Availability Zone dan tidak mendukung mode deployment ActiveMQ aktif/siaga.

    3. Pilih Selanjutnya.

  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.

  5. Di bagian Akses Konsol Web ActiveMQ, sediakan Nama pengguna dan Kata sandi. Pembatasan berikut berlaku untuk nama pengguna dan kata sandi broker:

    • Nama pengguna Anda hanya dapat berisi karakter alfanumerik, tanda hubung, titik, garis bawah, dan tilde (- . _ ~).

    • 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 Men-deploy.

    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.

  7. Pilih MyBroker.

    Pada MyBrokerhalaman, di bagian Connect, perhatikan URL konsol web ActiveMQ broker Anda, misalnya:

    https://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:8162

    Perhatikan juga Titik Akhir protokol tingkat wire. Berikut ini adalah contoh dari OpenWire endpoint:

    ssl://b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9-1.mq.us-east-2.amazonaws.com:61617

Langkah 2: menghubungkan aplikasi Java ke broker Anda

Setelah membuat broker ActiveMQ Amazon MQ, Anda dapat menghubungkan aplikasi ke broker. Contoh berikut menunjukkan cara menggunakan Layanan Pesan Java (JMS) untuk membuat koneksi ke broker, membuat antrean, dan mengirim pesan. Untuk contoh Java yang lengkap dapat berfungsi, lihat Working Java Example.

Anda dapat terhubung ke broker ActiveMQ menggunakan berbagai klien ActiveMQ. Kami merekomendasikan penggunaan Klien ActiveMQ.

Prasyarat

Mengaktifkan atribut VPC

catatan

Anda tidak dapat menonaktifkan aksesibilitas publik untuk broker Amazon MQ Anda yang ada.

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 dalam Panduan Pengguna Amazon VPC.

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, catat alamat dan port URL konsol web broker dan protokol tingkat kabel.

  4. Di bagian Detail, di bawah Keamanan dan jaringan, pilih nama grup keamanan Anda atau .

    Halaman Grup Keamanan Dasbor EC2 akan ditampilkan.

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

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

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

    2. Untuk Jenis, pilih TCP Kustom.

    3. Untuk Rentang Port, ketik port konsol web (8162).

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

    5. Pilih Simpan.

      Broker Anda kini dapat menerima koneksi masuk.

Menambahkan dependensi Java

Tambahkan paket activemq-client.jar dan activemq-pool.jar ke jalur kelas Java Anda. Contoh berikut menampilkan dependensi ini dalam file pom.xml proyek Maven.

<dependencies> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-client</artifactId> <version>5.15.16</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool</artifactId> <version>5.15.16</version> </dependency> </dependencies>

Untuk informasi selengkapnya tentang activemq-client.jar, lihat Konfigurasi Awaldalam dokumentasi Apache ActiveMQ.

penting

Pada kode contoh berikut, produsen dan konsumen berjalan dalam satu utas. Untuk sistem produksi (atau untuk menguji failover instans broker), pastikan bahwa produsen dan konsumen berjalan di host atau utas terpisah.

Membuat produsen pesan dan mengirimkan pesan

  1. Membuat pabrik koneksi yang dikumpulkan JMS untuk produsen pesan menggunakan titik akhir broker lalu memanggil metode createConnection untuk pabrik.

    catatan

    Untuk broker aktif/siaga, Amazon MQ menyediakan dua URL Konsol Web ActiveMQ, tetapi hanya satu URL aktif pada satu waktu. Demikian juga, Amazon MQ menyediakan dua titik akhir untuk setiap protokol tingkat wire, tetapi hanya satu titik akhir aktif di setiap pasangan pada satu waktu. Sufiks -1 dan -2 menunjukkan pasangan redundan. Untuk informasi selengkapnya, lihat Broker Architecture).

    Untuk titik akhir protokol tingkat wire, Anda dapat mengizinkan aplikasi untuk terhubung ke titik akhir menggunakan Transportasi Failover.

    // Create a connection factory. final ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(wireLevelEndpoint); // Pass the sign-in credentials. connectionFactory.setUserName(activeMqUsername); connectionFactory.setPassword(activeMqPassword); // Create a pooled connection factory. final PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory(); pooledConnectionFactory.setConnectionFactory(connectionFactory); pooledConnectionFactory.setMaxConnections(10); // Establish a connection for the producer. final Connection producerConnection = pooledConnectionFactory.createConnection(); producerConnection.start(); // Close all connections in the pool. pooledConnectionFactory.clear();
    catatan

    Produsen pesan harus selalu menggunakan kelas PooledConnectionFactory. Untuk informasi selengkapnya, lihat Selalu Gunakan Pooling Koneksi.

  2. Membuat sesi, antrean bernama MyQueue, dan produser pesan.

    // Create a session. final Session producerSession = producerConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); // Create a queue named "MyQueue". final Destination producerDestination = producerSession.createQueue("MyQueue"); // Create a producer from the session to the queue. final MessageProducer producer = producerSession.createProducer(producerDestination); producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
  3. Membuat string pesan "Hello from Amazon MQ!" lalu mengirimkan pesan.

    // Create a message. final String text = "Hello from Amazon MQ!"; TextMessage producerMessage = producerSession.createTextMessage(text); // Send the message. producer.send(producerMessage); System.out.println("Message sent.");
  4. Membersihkan produsen.

    producer.close(); producerSession.close(); producerConnection.close();

Membuat konsumen pesan dan menerima pesan

  1. Membuat pabrik koneksi JMS untuk produsen pesan menggunakan titik akhir broker lalu memanggil metode createConnection untuk pabrik.

    // Create a connection factory. final ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(wireLevelEndpoint); // Pass the sign-in credentials. connectionFactory.setUserName(activeMqUsername); connectionFactory.setPassword(activeMqPassword); // Establish a connection for the consumer. final Connection consumerConnection = connectionFactory.createConnection(); consumerConnection.start();
    catatan

    Konsumen pesan jangan pernah gunakan kelas PooledConnectionFactory. Untuk informasi selengkapnya, lihat Selalu Gunakan Pooling Koneksi.

  2. Membuat sesi, antrean bernama MyQueue, dan konsumen pesan.

    // Create a session. final Session consumerSession = consumerConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); // Create a queue named "MyQueue". final Destination consumerDestination = consumerSession.createQueue("MyQueue"); // Create a message consumer from the session to the queue. final MessageConsumer consumer = consumerSession.createConsumer(consumerDestination);
  3. Mulai menunggu pesan dan menerima pesan saat tiba.

    // Begin to wait for messages. final Message consumerMessage = consumer.receive(1000); // Receive the message when it arrives. final TextMessage consumerTextMessage = (TextMessage) consumerMessage; System.out.println("Message received: " + consumerTextMessage.getText());
    catatan

    Tidak seperti layanan AWS pesan (seperti Amazon SQS), konsumen selalu terhubung ke broker.

  4. Menutup konsumen, sesi, dan koneksi.

    consumer.close(); consumerSession.close(); consumerConnection.close();

Langkah 3: (Opsional) terhubung ke suatu 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 peran IAM berikut ke peran eksekusi fungsi Lambda Anda.

    catatan

    Tanpa izin IAM 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 yang dikonsumsi 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 ActiveMQ.

    catatan

    Dalam contoh, testQueue adalah nama antrian.

    { "eventSource": "aws:amq", "eventSourceArn": "arn:aws:mq:us-west-2:112556298976:broker:test:b-9bcfa592-423a-4942-879d-eb284b418fc8", "messages": { [ { "messageID": "ID:b-9bcfa592-423a-4942-879d-eb284b418fc8-1---mq---us-west-2.amazonaws.com.rproxy.goskope.com-37557-1234520418293-4:1:1:1:1", "messageType": "jms/text-message", "data": "QUJDOkFBQUE=", "connectionId": "myJMSCoID", "redelivered": false, "destination": { "physicalname": "testQueue" }, "timestamp": 1598827811958, "brokerInTime": 1598827811958, "brokerOutTime": 1598827811959 }, { "messageID": "ID:b-9bcfa592-423a-4942-879d-eb284b418fc8-1---mq---us-west-2.amazonaws.com.rproxy.goskope.com-37557-1234520418293-4:1:1:1:1", "messageType":"jms/bytes-message", "data": "3DTOOW7crj51prgVLQaGQ82S48k=", "connectionId": "myJMSCoID1", "persistent": false, "destination": { "physicalname": "testQueue" }, "timestamp": 1598827811958, "brokerInTime": 1598827811958, "brokerOutTime": 1598827811959 } ] } }

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

Langkah 4: hapus broker Anda

Jika Anda tidak menggunakan broker Amazon MQ (dan tidak memperkirakan menggunakannya dalam waktu dekat), itu adalah praktik terbaik untuk menghapusnya dari Amazon MQ untuk mengurangi biaya Anda. AWS

Contoh berikut menunjukkan cara menghapus broker menggunakan AWS Management Console.

  1. Masuk ke konsol Amazon MQ.

  2. Dari daftar broker, pilih broker Anda (misalnya, MyBroker) dan kemudian pilih Hapus.

  3. Di Hapus MyBroker? kotak dialog, ketik delete dan kemudian pilih Hapus.

    Menghapus broker berlangsung sekitar 5 menit.

Langkah selanjutnya

Sekarang Anda telah membuat broker, menghubungkan aplikasi ke broker, serta mengirim dan menerima pesan, Anda mungkin ingin mencoba hal berikut:

Anda juga dapat mulai menyelami Praktik Terbaik untuk Amazon MQ dan Amazon MQ REST API, dan kemudian berencana untuk bermigrasi ke Amazon MQ.