Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
Önemli notlar
- JMS 2.0 API desteği için Azure Service Bus Premium katmanı ve azure-servicebus-jms kitaplığı gerekir. Premium ad alanında diğer JMS kitaplıklarının (örneğin, qpid-jms-client ) doğrudan kullanılması JMS 1.1 davranışına neden olur ve bazı JMS 2.0 özellikleri beklendiği gibi çalışmayabilir.
- Kitaplık açık kaynaktır ve qpid-jms-client üzerine kurulmuştur; tüm qpid-jms-client API'leri bu kitaplıkla çalışır, dolayısıyla satıcı kilidi yoktur. Ayrıca ön getirme ilkeleri, yeniden bağlanma ilkeleri, Microsoft Entra Kimliği, Yönetilen Kimlik desteği ve Boşta Beklerken Otomatik Silme için varsayılan değerler sağlar.
- Bu kitaplık Jakarta EE ve Java EE için iki çeşitte mevcuttur. Hangi yapıtın kullanılacağına ilişkin ayrıntılar için bkz. Jakarta EE ve javax desteği .
Jakarta EE ve javax desteği
Kitaplıkazure-servicebus-jms, hem eski Java EE () hem de yeni Jakarta EE (javax.jmsjakarta.jms) API ad alanlarını desteklemek için iki farklı değişkende kullanılabilir.
| API ad alanı | Maven yapıtı | Versions | JMS spesifikasyonu |
|---|---|---|---|
jakarta.jms (Jakarta EE 9+) |
com.azure:azure-servicebus-jms | 2.0.0+ | Jakarta Messaging (JMS 2.0) |
javax.jms (Java EE) |
com.microsoft.azure:azure-servicebus-jms | 1.0.x | JMS 2.0 |
Hangi yapıtı kullanmalıyım?
Projeniz Jakarta EE 9 veya üzerini (örneğin Spring Boot 3.x, Quarkus 3.x veya
jakarta.jms.*içeri aktaran herhangi bir çerçeve) kullanıyorsa,com.azureyapıtını kullanın:<dependency> <groupId>com.azure</groupId> <artifactId>azure-servicebus-jms</artifactId> <version>2.0.0</version> </dependency>Projeniz hala Java EE kullanıyorsa (içeri aktarır
javax.jms.*), yapıtıcom.microsoft.azurekullanmaya devam edin:<dependency> <groupId>com.microsoft.azure</groupId> <artifactId>azure-servicebus-jms</artifactId> <version>1.0.2</version> </dependency>
Önemli
İki yapıtı karıştırmayın. Projede com.azure:azure-servicebus-jms kullandığınızda ve javax.jms.* içe aktardığınızda derleme hataları ile karşılaşırsınız; bu durumun tersi de geçerlidir.
Javax'tan Jakarta'ya geçiş
Uygulamanızı Java EE'den Jakarta EE'ye yükseltiyorsanız:
- Maven bağımlılık grup kimliğinizi
com.microsoft.azure'dancom.azure'e değiştirin ve sürümü2.0.0veya daha yenisine güncelleyin. - Kodunuzdaki tüm
javax.jms.*içeri aktarmalarınıjakarta.jms.*olarak güncelleştirin. -
ServiceBusJmsConnectionFactoryAPI ve yapılandırma her iki değişkende de aynı kalır, bu nedenle içeri aktarma ve bağımlılık güncelleştirmeleri dışında kod değişikliği gerekmez.
Ö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, bir ad alanı ve kuyruk oluşturun ve bunun için Azure portalını kullanın. 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 | Uygulama Programlama Arayüzü (API) | Durum |
|---|---|---|
| Kuyruklar |
|
Destekleniyor |
| Konu başlıkları |
|
Destekleniyor |
| Geçici kuyruklar |
|
Destekleniyor |
| Geçici konular |
|
Destekleniyor |
| İleti Üreticisi / JMSProducer |
|
Destekleniyor |
| Kuyruk tarayıcıları |
|
Destekleniyor |
| Mesaj Tüketicisi/ JMSConsumer |
noLocal şu anda desteklenmiyor |
Destekleniyor |
| Paylaşılan dayanıklı abonelikler |
|
Destekleniyor |
| Paylaşılmayan dayanıklı abonelikler |
noLocal şu anda desteklenmiyor ve false olarak ayarlanmalıdır |
Destekleniyor |
| Paylaşılan geçici abonelikler |
|
Destekleniyor |
| Paylaşılmayan dayanıklı olmayan abonelikler |
noLocal şu anda desteklenmiyor ve false olarak ayarlanmalıdır |
Destekleniyor |
| İleti seçicileri | Oluşturulan tüketiciye bağlıdır. Service Bus seçicileri "LIKE" ve "BETWEEN" SQL anahtar sözcüklerini desteklemez. | Destekleniyor |
| Teslim Gecikmesi (zamanlanmış iletiler) |
|
Destekleniyor |
| İleti oluşturuldu |
|
Destekleniyor |
| Çapraz varlık işlemleri |
|
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 azure-servicebus-jms kitaplığını projenizin derleme yoluna ekleyin. Bu paket, ön getirme ilke değerleri, yeniden bağlanma stratejileri, Microsoft Entra Id ve Yönetilen Kimlik desteği gibi gerekli varsayılan değerleri kullanıma hazır olarak sağlar. Projenizin API ad alanıyla eşleşen yapıtı seçin (ayrıntılar için jakarta EE ve javax desteğine bakın):
Jakarta EE (jakarta.jms):
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-servicebus-jms</artifactId>
<version>2.0.0</version>
</dependency>
Java EE (javax.jms):
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-servicebus-jms</artifactId>
<version>1.0.2</version>
</dependency>
Not
Kitaplığı derleme yoluna 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.
Örnekleme yap
ServiceBusJmsConnectionFactorySettingsServiceBusJmsConnectionFactorySettings connFactorySettings = new ServiceBusJmsConnectionFactorySettings(); connFactorySettings.setConnectionIdleTimeoutMS(20000);ServiceBusJmsConnectionFactoryuygunServiceBusConnectionStringkullanarak oluştur.String ServiceBusConnectionString = "<SERVICE_BUS_CONNECTION_STRING_WITH_MANAGE_PERMISSIONS>"; ConnectionFactory factory = new ServiceBusJmsConnectionFactory(ServiceBusConnectionString, connFactorySettings);ConnectionFactoryöğesini kullanarak birConnectionoluşturun ve sonra daSessionConnection 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,
MessageProducer,MessageConsumerveMessage'nin kendisinin oluşturulmasına olanak tanıyan API'nin önemli bir yapı taşıdır. Daha fazla ayrıntı için JMS API programlama modelini gözden geçirinService Bus'ta, oturumlar, kuyruklar ve aboneliklerde FIFO işlemeyi etkinleştirmek için hizmet ve istemci taraflı bir yapı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.