Menghubungkan aplikasi Java ke broker Amazon MQ Anda - Amazon MQ

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

Menghubungkan aplikasi Java ke broker Amazon MQ 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

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.

Untuk 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();

Untuk 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();