Menggunakan Java Message Service 2.0 API dengan Azure Service Bus Premium

Artikel ini menjelaskan cara menggunakan API Java Message Service (JMS) 2.0 API yang populer untuk berinteraksi dengan Azure Service Bus 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

Mulai menggunakan Azure 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(Queue queue)
  • JMSContext.createBrowser(Queue queue, String messageSelector)
Didukung
Konsumen Pesan/
JMSConsumer
  • JMSContext.createConsumer( Destination destination)
  • JMSContext.createConsumer( Destination destination, String messageSelector)
  • JMSContext.createConsumer( Destination destination, String messageSelector, boolean noLocal)

noLocal saat ini tidak didukung
Didukung
Langganan bersama yang tahan lama
  • JMSContext.createSharedDurableConsumer(Topic topic, String name)
  • JMSContext.createSharedDurableConsumer(Topic topic, String name, String messageSelector)
Didukung
Langganan privat yang tahan lama
  • JMSContext.createDurableConsumer(Topic topic, String name)
  • createDurableConsumer(Topic topic, String name, String messageSelector, boolean noLocal)

noLocal saat ini tidak didukung dan harus diatur ke false
Didukung
Langganan bersama yang tidak tahan lama
  • JMSContext.createSharedConsumer(Topic topic, String sharedSubscriptionName)
  • JMSContext.createSharedConsumer(Topic topic, String sharedSubscriptionName, String messageSelector)
Didukung
Langganan privat yang tidak tahan lama
  • JMSContext.createConsumer(Destination destination)
  • JMSContext.createConsumer( Destination destination, String messageSelector)
  • JMSContext.createConsumer( Destination destination, String messageSelector, 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( Serializable object)
  • JMSContext.createStreamMessage()
  • JMSContext.createTextMessage()
  • JMSContext.createTextMessage( String text)
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

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

    Di Azure Service Bus, sesi adalah konstruksi sisi layanan dan klien untuk memungkinkan pemrosesan FIFO pada antrean dan langganan.

Menulis aplikasi JMS

Setelah Session atau JMSContext telah digunakan, aplikasi Anda dapat menggunakan JMS API yang tidak asing untuk melakukan operasi data dan pengelolaan. Lihat daftar fitur JMS yang didukung untuk melihat API yang didukung. Berikut adalah beberapa cuplikan kode sampel untuk memulai 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.

Langkah berikutnya

Untuk informasi selengkapnya tentang Azure Service Bus dan detail tentang entitas Java Message Service (JMS), lihat tautan di bawah -