Azure Service Bus Premium ile Java Message Service 2.0 API kullanma

Bu makalede, Gelişmiş İleti Kuyruğa Alma Protokolü (AMQP) 1.0 protokolü üzerinden Azure Service Bus ile etkileşime geçmek için popüler Java İleti Hizmeti (JMS) 2.0 API'sinin nasıl kullanılacağı açıklanmaktadır.

Not

Java İleti Hizmeti (JMS) 2.0 API desteği yalnızca premium katmanda kullanılabilir.>

Önkoşullar

Service Bus’ı kullanmaya başlama

Bu kılavuzda zaten bir Service Bus ad alanınız olduğu varsayılır. Aksi takdirde Azure portalını kullanarak bir ad alanı ve kuyruk oluşturun. Service Bus ad alanları ve kuyrukları oluşturma hakkında daha fazla bilgi için bkz . Azure portalı aracılığıyla Service Bus kuyruklarını kullanmaya başlama.

Java Geliştirme ortamı ayarlama

Java uygulamaları geliştirmek için uygun geliştirme ortamını ayarlamanız gerekir -

  • JDK (Java Geliştirme Seti) veya JRE (Java Çalışma Zamanı Ortamı) yüklenir.
  • JDK veya JRE, derleme yoluna ve uygun sistem değişkenlerine eklenir.
  • JDK veya JRE kullanmak için bir Java IDE yüklenir. Örneğin, Eclipse veya IntelliJ.

Geliştirici ortamınızı Azure'da Java için hazırlama hakkında daha fazla bilgi edinmek için bu kılavuzu kullanın.

Hangi JMS özellikleri desteklenir?

Aşağıdaki tabloda, Azure Service Bus'ın şu anda desteklediği Java İleti Hizmeti (JMS) özellikleri listelenmiştir. Ayrıca desteklenmeyen özellikleri de gösterir.

Özellik API Durum
Kuyruklar
  • JMSContext.createQueue( String queueName)
Destekleniyor
Konu başlıkları
  • JMSContext.createTopic( String topicName)
Destekleniyor
Geçici kuyruklar
  • JMSContext.createTemporaryQueue()
Destekleniyor
Geçici konular
  • JMSContext.createTemporaryTopic()
Destekleniyor
İleti Üreticisi /
JMSProducer
  • JMSContext.createProducer()
Destekleniyor
Kuyruk tarayıcıları
  • JMSContext.createBrowser(Kuyruk kuyruğu)
  • JMSContext.createBrowser(Kuyruk kuyruğu, Dize iletisiSelector)
Destekleniyor
İleti Tüketicisi/
JMSConsumer
  • JMSContext.createConsumer( Hedef hedef)
  • JMSContext.createConsumer( Hedef hedef, Dize iletisi Seçici)
  • JMSContext.createConsumer( Hedef hedef, String messageSelector, boolean noLocal)

noLocal şu anda desteklenmiyor
Destekleniyor
Paylaşılan dayanıklı abonelikler
  • JMSContext.createSharedDurableConsumer(Konu konusu, Dize adı)
  • JMSContext.createSharedDurableConsumer(Konu konusu, Dize adı, Dize iletisi Seçici)
Destekleniyor
Paylaşılmayan dayanıklı abonelikler
  • JMSContext.createDurableConsumer(Konu konusu, Dize adı)
  • createDurableConsumer(Konu başlığı, Dize adı, Dize iletisiSelector, boole noLocal)

noLocal şu anda desteklenmiyor ve false olarak ayarlanmalıdır
Destekleniyor
Paylaşılan dayanıklı olmayan abonelikler
  • JMSContext.createSharedConsumer(Konu konusu, SharedSubscriptionName Dizesi)
  • JMSContext.createSharedConsumer(Konu konusu, SharedSubscriptionName Dizesi, Dize iletileriElektor)
Destekleniyor
Paylaşılmayan dayanıklı olmayan abonelikler
  • JMSContext.createConsumer(Hedef hedef)
  • JMSContext.createConsumer( Hedef hedef, Dize iletisi Seçici)
  • JMSContext.createConsumer( Hedef hedef, String messageSelector, boolean noLocal)

noLocal şu anda desteklenmiyor ve false olarak ayarlanmalıdır
Destekleniyor
İleti seçicileri oluşturulan tüketiciye bağlıdır Destekleniyor
Teslim Gecikmesi (zamanlanmış iletiler)
  • JMSProducer.setDeliveryDelay( long deliveryDelay)
Destekleniyor
İleti oluşturuldu
  • JMSContext.createMessage()
  • JMSContext.createBytesMessage()
  • JMSContext.createMapMessage()
  • JMSContext.createObjectMessage( Serializable nesnesi)
  • JMSContext.createStreamMessage()
  • JMSContext.createTextMessage()
  • JMSContext.createTextMessage( Dize metni)
Destekleniyor
Çapraz varlık işlemleri
  • Connection.createSession(true, Session.SESSION_TRANSACTED)
Destekleniyor
Dağıtılmış işlemler Desteklenmez

Java İleti Hizmeti (JMS) istemci kitaplığını indirme

Premium katmanda sağlanan tüm özellikleri kullanmak için projenin derleme yoluna şu kitaplığı ekleyin: azure-servicebus-jms. Bu paket, ilke öncesi değerler, yeniden bağlanma ilkeleri, Microsoft Entra Id ve Yönetilen Kimlik desteği gibi bazı gerekli varsayılanları kullanıma hazır olarak sağlar.

Not

Derleme yoluna azure-servicebus-jms eklemek için Maven veya Gradle gibi projeniz için tercih edilen bağımlılık yönetimi aracını kullanın.

Java uygulamalarını kodlama

Bağımlılıklar içeri aktarıldıktan sonra Java uygulamaları JMS sağlayıcısından bağımsız bir şekilde yazılabilir.

JMS kullanarak Azure Service Bus'a bağlanma

JMS istemcilerini kullanarak Azure Service Bus'a bağlanmak için, Birincil Bağlantı Dizesi altındaki Azure portalındaki 'Paylaşılan Erişim İlkeleri'nde bulunan bağlantı dizesi gerekir.

  1. Örneği oluşturma ServiceBusJmsConnectionFactorySettings

    ServiceBusJmsConnectionFactorySettings connFactorySettings = new ServiceBusJmsConnectionFactorySettings();
    connFactorySettings.setConnectionIdleTimeoutMS(20000);
    
  2. ServiceBusJmsConnectionFactory uygun ile ServiceBusConnectionStringörneği oluşturma.

    String ServiceBusConnectionString = "<SERVICE_BUS_CONNECTION_STRING_WITH_MANAGE_PERMISSIONS>";
    ConnectionFactory factory = new ServiceBusJmsConnectionFactory(ServiceBusConnectionString, connFactorySettings);
    
  3. ConnectionFactory öğesini kullanarak bir Connection ve sonra daSession

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

    veya a JMSContext (JMS 2.0 istemcileri için)

    JMSContext jmsContext = factory.createContext();
    

    Önemli

    Benzer şekilde adlandırılmış olsa da JMS 'Session' ve Service Bus 'Session' birbirinden tamamen bağımsızdır.

    JMS 1.1'de Session, API'nin , MessageConsumerve Message kendisinin oluşturulmasına MessageProducerolanak tanıyan önemli bir yapı taşıdır. Daha fazla ayrıntı için JMS API programlama modelini gözden geçirin

    Service Bus'ta oturumlar, kuyruklarda ve aboneliklerde FIFO işlemeyi etkinleştirmek için hizmet ve istemci tarafı yapısıdır.

JMS uygulamasını yazma

Session veya JMSContext örneği oluşturulduktan sonra, uygulamanız hem yönetim hem de veri işlemlerini gerçekleştirmek için tanıdık JMS API'lerini kullanabilir. Hangi API'lerin desteklendiğine bakmak için desteklenen JMS özelliklerinin listesine bakın. JMS'yi kullanmaya başlamak için bazı örnek kod parçacıkları aşağıda verilmiştir:

Kuyruğa ve konuya ileti gönderme

// 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);

Kuyruktan ileti alma

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

Bir konudaki paylaşılan dayanıklı abonelikten ileti alma

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

Özet

Bu kılavuzda, AMQP 1.0 üzerinden Java İleti Hizmeti (JMS) kullanan Java istemci uygulamalarının Azure Service Bus ile nasıl etkileşim kurabileceği gösterildi.

Service Bus AMQP 1.0'ı .NET, C, Python ve PHP gibi diğer dillerde de kullanabilirsiniz. Bu farklı diller kullanılarak oluşturulan bileşenler, Service Bus'taki AMQP 1.0 desteğini kullanarak güvenilir ve tam uygunlukta ileti alışverişi yapabilir.