Bagikan melalui


Menggunakan Java Message Service 2.0 API dengan Azure Service Bus Premium

Artikel ini menjelaskan cara menggunakan API Java Message Service (JMS) 2.0 populer untuk berinteraksi dengan Azure Bus Layanan melalui protokol Advanced Message Queueing Protocol (AMQP) 1.0.

Catatan

Dukungan untuk JAVA Message Service (JMS) 2.0 API hanya tersedia di tingkat premium.>

Prasyarat

Memulai Service Bus

Panduan ini mengasumsikan bahwa Anda sudah memiliki ruang nama Azure Service Bus. Jika tidak, buat namespace layanan dan antrean menggunakan portal Azure. Untuk informasi selengkapnya tentang cara membuat ruang nama dan antrean Service Bus, lihat Mulai menggunakan dengan antrean Service Bus melalui portal Microsoft Azure.

Menyiapkan lingkungan Pengembangan Java

Untuk mengembangkan aplikasi Java, Anda perlu mengatur lingkungan pengembangan yang sesuai -

  • Baik JDK (Java Development Kit) atau JRE (Java Runtime Environment) dipasang.
  • JDK atau JRE ditambahkan ke jalur build dan variabel sistem yang sesuai.
  • Java IDE dipasang untuk menggunakan JDK atau JRE. Misalnya, Eclipse atau IntelliJ.

Untuk mempelajari lebih lanjut cara menyiapkan lingkungan pengembang untuk Java di Azure, gunakan panduan ini.

Fitur JMS apa yang didukung?

Tabel berikut mencantumkan fitur Java Message Service (JMS) yang saat ini didukung oleh Azure Service Bus. Ini juga menunjukkan fitur yang tidak didukung.

Fitur API Status
Antrean
  • JMSContext.createQueue( String queueName)
Didukung
Topik
  • JMSContext.createTopic( String topicName)
Didukung
Antrean sementara
  • JMSContext.createTemporaryQueue()
Didukung
Topik sementara
  • JMSContext.createTemporaryTopic()
Didukung
Produser Pesan /
JMSProducer
  • JMSContext.createProducer()
Didukung
Antrean browser
  • JMSContext.createBrowser(Antrean Antrean)
  • JMSContext.createBrowser(Queue queue, String messageSelector)
Didukung
Konsumen Pesan/
JMSConsumer
  • JMSContext.createConsumer( Tujuan tujuan)
  • JMSContext.createConsumer( Tujuan, Pesan stringSelector)
  • JMSContext.createConsumer( Destination destination, String messageSelector, boolean noLocal)

noLocal saat ini tidak didukung
Didukung
Langganan bersama yang tahan lama
  • JMSContext.createSharedDurableConsumer(Topik topik, Nama string)
  • JMSContext.createSharedDurableConsumer(Topik, Nama string, pesan StringSelector)
Didukung
Langganan privat yang tahan lama
  • JMSContext.createDurableConsumer(Topik topik, Nama string)
  • createDurableConsumer(Topik topik, Nama string, String messageSelector, boolean noLocal)

noLocal saat ini tidak didukung dan harus diatur ke false
Didukung
Langganan bersama yang tidak tahan lama
  • JMSContext.createSharedConsumer(Topik topik, String sharedSubscriptionName)
  • JMSContext.createSharedConsumer(Topik topik, String sharedSubscriptionName, String messageSelector)
Didukung
Langganan privat yang tidak tahan lama
  • JMSContext.createConsumer(Tujuan tujuan)
  • JMSContext.createConsumer( Tujuan, Pesan stringSelector)
  • JMSContext.createConsumer( Tujuan, Pesan stringSelector, boolean noLocal)

noLocal saat ini tidak didukung dan harus diatur ke false
Didukung
Pemilih pesan tergantung pada konsumen yang dibuat Didukung
Penundaan Pengiriman (pesan terjadwal)
  • JMSProducer.setDeliveryDelay(long deliveryDelay)
Didukung
Pesan dibuat
  • JMSContext.createMessage()
  • JMSContext.createBytesMessage()
  • JMSContext.createMapMessage()
  • JMSContext.createObjectMessage( Objek serializable)
  • JMSContext.createStreamMessage()
  • JMSContext.createTextMessage()
  • JMSContext.createTextMessage( Teks string)
Didukung
Transaksi lintas entitas
  • Connection.createSession(true, Session.SESSION_TRANSACTED)
Didukung
Transaksi terdistribusi Tidak didukung

Mengunduh pustaka klien Java Message Service (JMS)

Untuk menggunakan semua fitur yang tersedia di tingkat premium, tambahkan pustaka berikut ke jalur build proyek: azure-servicebus-jms. Paket ini menyediakan beberapa default yang diperlukan seperti nilai kebijakan prefetch, kebijakan koneksi ulang, ID Microsoft Entra, dan dukungan Identitas Terkelola di luar kotak.

Catatan

Untuk menambahkan azure-servicebus-jms ke jalur build, gunakan alat manajemen dependensi pilihan untuk proyek Anda seperti Maven atau Gradle.

Aplikasi Coding Java

Setelah dependensi diimpor, aplikasi Java dapat ditulis dengan cara agnostik penyedia JMS.

Menghubungkan ke Azure Service Bus menggunakan JMS

Untuk terhubung dengan Azure Service Bus menggunakan klien JMS, Anda memerlukan string koneksi yang tersedia di 'Kebijakan Akses Bersama' di bagian portal Microsoft Azure di String Koneksi Utama.

  1. Menggunakan ServiceBusJmsConnectionFactorySettings

    ServiceBusJmsConnectionFactorySettings connFactorySettings = new ServiceBusJmsConnectionFactorySettings();
    connFactorySettings.setConnectionIdleTimeoutMS(20000);
    
  2. Gunakan ServiceBusJmsConnectionFactory dengan ServiceBusConnectionString yang sesuai.

    String ServiceBusConnectionString = "<SERVICE_BUS_CONNECTION_STRING_WITH_MANAGE_PERMISSIONS>";
    ConnectionFactory factory = new ServiceBusJmsConnectionFactory(ServiceBusConnectionString, connFactorySettings);
    
  3. Gunakan ConnectionFactory untuk membuat Connection dan kemudian Session

    Connection connection = factory.createConnection();
    Session session = connection.createSession();
    

    atau JMSContext a (untuk klien JMS 2.0)

    JMSContext jmsContext = factory.createContext();
    

    Penting

    Meskipun dinamai serupa, 'Sesi' JMS dan 'Sesi' Azure Service Bus benar-benar independen satu sama lain.

    Dalam JMS 1.1, Sesi adalah blok penyusun penting dari API yang memungkinkan pembuatan MessageProducer, MessageConsumer, dan itu Message sendiri. Untuk detail selengkapnya, tinjau model pemrograman JMS API

    Dalam Bus Layanan, sesi adalah konstruksi sisi layanan dan klien untuk memungkinkan pemrosesan FIFO pada antrean dan langganan.

Menulis aplikasi JMS

Session Setelah atau JMSContext dibuat, aplikasi Anda dapat menggunakan API JMS yang sudah dikenal untuk melakukan operasi manajemen dan data. Lihat daftar fitur JMS yang didukung untuk melihat API yang didukung. Berikut adalah beberapa cuplikan kode sampel untuk mulai menggunakan JMS -

Mengirim pesan ke antrean dan topik

// Create the queue and topic
Queue queue = jmsContext.createQueue("basicQueue");
Topic topic = jmsContext.createTopic("basicTopic");
// Create the message
Message msg = jmsContext.createMessage();

// Create the JMS message producer
JMSProducer producer = jmsContext.createProducer();

// send the message to the queue
producer.send(queue, msg);
// send the message to the topic
producer.send(topic, msg);

Menerima pesan dari antrean

// Create the queue
Queue queue = jmsContext.createQueue("basicQueue");

// Create the message consumer
JMSConsumer consumer = jmsContext.createConsumer(queue);

// Receive the message
Message msg = (Message) consumer.receive();

Menerima pesan dari langganan bersama yang tahan lama pada topik

// Create the topic
Topic topic = jmsContext.createTopic("basicTopic");

// Create a shared durable subscriber on the topic
JMSConsumer sharedDurableConsumer = jmsContext.createSharedDurableConsumer(topic, "sharedDurableConsumer");

// Receive the message
Message msg = (Message) sharedDurableConsumer.receive();

Ringkasan

Panduan developer ini memperlihatkan bagaimana aplikasi klien Java yang menggunakan Java Message Service (JMS) melalui AMQP 1.0 dapat berinteraksi dengan Azure Service Bus.

Anda juga dapat menggunakan Azure Service Bus AMQP 1.0 dari bahasa pemrogram lain, seperti .NET, C, Python, dan PHP. Komponen yang dibuat dengan menggunakan bahasa pemrogram yang berbeda ini dapat bertukar pesan dengan andal dan dengan ketepatan tinggi menggunakan dukungan AMQP 1.0 di Azure Service Bus.