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, Spring JMS çerçevesiyle tümleştirilmiş JMS API'siyle Azure Service Bus nasıl kullanılacağı açıklanmaktadır.
Temel özellikler
Parolasız bağlantı
Parolasız bağlantı, uygulamada, yapılandırma dosyalarında veya ortam değişkenlerinde hiçbir kimlik bilgisi depolamadan Azure hizmetlere bağlanmak için Microsoft Entra kimlik doğrulamasını kullanır. Microsoft Entra kimlik doğrulaması, Microsoft Entra ID tanımlanan kimlikleri kullanarak Azure Service Bus bağlanma mekanizmasıdır. Microsoft Entra kimlik doğrulaması ile Service Bus ve diğer Microsoft hizmetleri merkezi bir konumda yönetebilirsiniz ve bu da izin yönetimini basitleştirir.
Nasıl çalışır?
Spring Cloud Azure, uygulama kimlik doğrulaması yapılandırmasına bağlı olarak ilk olarak aşağıdaki kimlik bilgileri türlerinden birini oluşturur:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredential
Bu tür kimlik bilgilerinin hiçbiri bulunmazsa, DefaultTokenCredential aracılığıyla kimlik bilgisi zinciri uygulama özelliklerinden, ortam değişkenlerinden, yönetilen kimlikten veya IDE'lerden kimlik bilgilerini almak için kullanılır. Daha fazla bilgi için bkz. Spring Cloud Azure authentication.
Bağımlılık kurulumu
Spring JMS uygulamanızı Azure Service Bus kullanacak şekilde geçirmek istiyorsanız aşağıdaki bağımlılıkları ekleyin.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId>
</dependency>
Konfigürasyon
Aşağıdaki tabloda Spring JMS desteği kullanılırken yapılandırılabilir özellikler açıklanmaktadır:
| Mülk | Açıklama |
|---|---|
spring.jms.servicebus.connection-string |
Bağlantı dizesini doğrudan sağlamak istediğiniz durumlarda kullanılacak Azure Service Bus bağlantı dizesi. |
spring.jms.servicebus.topic-client-id |
JMS istemci kimliği. Sadece topicJmsListenerContainerFactory fasulye için çalışır. |
spring.jms.servicebus.enabled |
Service Bus JMS otomatik yapılandırmasının etkinleştirilip etkinleştirilmeydiğini gösteren değer. Varsayılan değer true. |
spring.jms.servicebus.idle-timeout |
İstemcinin, hiç ileti teslim edilmediğinde Service Bus'ın bir bağlantıyı ne kadar süre canlı tutmasını beklediğini gösteren bağlantının boşta kalma zaman aşımı süresi. Varsayılan değer 2m. |
spring.jms.servicebus.passwordless-enabled |
Azure Service Bus JMS için parolasız etkinleştirilip etkinleştirilmeyileceği. Varsayılan değer false. |
spring.jms.servicebus.pricing-tier |
Azure Service Bus Fiyatlandırma Katmanı. Desteklenen değerler premium ve standard. Premium katman Java İleti Hizmeti (JMS) 2.0'ı kullanırken standart katmanda Azure Service Bus ile etkileşime geçmek için JMS 1.1 kullanılır. |
spring.jms.servicebus.listener.reply-pub-sub-domain |
Yanıt hedef türünün bir konu başlığı olup olmadığını gösteren değer. Sadece topicJmsListenerContainerFactory fasulye için çalışır. |
spring.jms.servicebus.listener.phase |
Bu kapsayıcının başlatılıp durdurulacağı aşama. |
spring.jms.servicebus.listener.reply-qos-settings |
Yanıt gönderirken kullanılacak QosSettings yapılandırılır. |
spring.jms.servicebus.listener.subscription-durable |
Aboneliğin dayanıklı olup olmayacağını gösteren bir değer. Sadece topicJmsListenerContainerFactory fasulye için çalışır. Varsayılan değer true. |
spring.jms.servicebus.listener.subscription-shared |
Aboneliğin paylaşılıp paylaşılmayacağını gösteren değer. Sadece topicJmsListenerContainerFactory fasulye için çalışır. |
spring.jms.servicebus.pool.block-if-full |
Bir bağlantı istendiğinde ve havuz dolu olduğunda engellenip engellenmeyeceğini gösteren değer. Bunun yerine bir JMSException fırlatmak için bunu false olarak ayarlayın. |
spring.jms.servicebus.pool.block-if-full-timeout |
Havuz hâlâ doluysa özel durum fırlatılmadan önceki bekleme süresi. |
spring.jms.servicebus.pool.enabled |
Normal JmsPoolConnectionFactoryyerine bir ConnectionFactory oluşturulup oluşturulmayacağını gösteren değer. |
spring.jms.servicebus.pool.idle-timeout |
Bağlantı havuzunun boşta kalma zaman aşımı. |
spring.jms.servicebus.pool.max-connections |
Havuzdaki bağlantıların en fazla sayısı. |
spring.jms.servicebus.pool.max-sessions-per-connection |
Havuzdaki her bağlantı için havuza alınan en fazla oturum sayısı. |
spring.jms.servicebus.pool.time-between-expiration-check |
Boşta bağlantıları tahliye eden iş parçacığının çalışmaları arasındaki bekleme süresi. Negatif olduğunda, boştaki bağlantıları çıkarma iş parçacığı çalıştırılmaz. |
spring.jms.servicebus.pool.use-anonymous-producers |
Yalnızca bir anonim MessageProducer örneğinin kullanılıp kullanılmayacağını gösteren bir değer. Gerektiğinde bir MessageProducer oluşturmak için bunu false olarak ayarlayın. |
spring.jms.servicebus.prefetch-policy.all |
Bu Service Bus ad alanındaki prefetch seçeneğinin yedek değeri. Varsayılan değer 0. |
spring.jms.servicebus.prefetch-policy.durable-topic-prefetch |
Kalıcı konu için önceden getirme sayısı. Varsayılan değer 0. |
spring.jms.servicebus.prefetch-policy.queue-browser-prefetch |
Kuyruk tarayıcısı için önceden getirme sayısı. Varsayılan değer 0. |
spring.jms.servicebus.prefetch-policy.queue-prefetch |
Kuyruk için önceden getirme sayısı. Varsayılan değer 0. |
spring.jms.servicebus.prefetch-policy.topic-prefetch |
Konu için önceden getirme sayısı. Varsayılan değer 0. |
Not
Spring JMS genel yapılandırması kısaca atlanır.
Daha fazla bilgi için bkz. Spring JMS Belgesi
Temel kullanım
Parolasız kullanarak Azure Service Bus JMS'ye bağlanma
application.yml dosyanızda aşağıdaki özellikleri yapılandırın:
spring:
jms:
servicebus:
namespace: ${AZURE_SERVICEBUS_NAMESPACE}
pricing-tier: ${PRICING_TIER}
passwordless-enabled: true
Önemli
Azure Service Bus JMS, Service Bus kaynaklarına yönelik istekleri yetkilendirmek için Microsoft Entra ID kullanmayı destekler. Microsoft Entra ID ile, kullanmakta olduğunuz Microsoft Entra hesabına Azure Service Bus Veri Sahibi rolünü atadığınızdan emin olun. Daha fazla bilgi için bkz. Azure portalını kullanarak Azure rolleri atama.
Yönetilen Kimlik kullanarak JMS ile Azure Service Bus’a bağlanma
Yönetilen kimliği kullanmak için hizmetiniz için yönetilen kimliği etkinleştirin ve
Azure Service Bus Data Ownerrolünü atayın. Daha fazla bilgi için bkz. Azure Service Bus kaynaklarına erişmek için Microsoft Entra ID ile yönetilen kimlik doğrulama.application.yml dosyanızda aşağıdaki özellikleri yapılandırın:
spring: cloud: azure: credential: managed-identity-enabled: true jms: servicebus: namespace: ${AZURE_SERVICEBUS_NAMESPACE} pricing-tier: ${PRICING_TIER} passwordless-enabled: trueÖnemli
Kullanıcı tarafından atanan yönetilen kimlik kullanıyorsanız, kullanıcı tarafından atanan yönetilen kimlik istemci kimliğiniz ile
spring.cloud.azure.credential.client-idözelliğini de eklemeniz gerekir.
bağlantı dizesi kullanarak Azure Service Bus JMS'ye bağlanma
Aşağıdaki özellikleri eklediğinizde hazır olursunuz.
spring:
jms:
servicebus:
connection-string: ${AZURE_SERVICEBUS_CONNECTION_STRING}
pricing-tier: ${PRICING_TIER}
Not
Microsoft, kullanılabilir en güvenli kimlik doğrulama akışının kullanılmasını önerir. Veritabanları, önbellekler, mesajlaşma veya yapay zeka hizmetleri gibi bu yordamda açıklanan kimlik doğrulama akışı, uygulamaya çok yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskler taşır. Bu akışı yalnızca parolasız veya anahtarsız bağlantılar için yönetilen kimlikler gibi daha güvenli seçenekler uygun olmadığında kullanın. Yerel makine işlemleri için parolasız veya anahtarsız bağlantılar için kullanıcı kimliklerini tercih edin.
Bağlantı
Spring Cloud Azure, Azure Service Bus JMS'ye bağlanmak için aşağıdaki üç Connection Factory seçeneğini sağlar:
JmsPoolConnectionFactory: Bu fabrika, gibispring.jms.servicebus.pool.max-connectionsözelleştirilebilir seçeneklere sahip bir bağlantı havuzu tutar. Ön eklispring.jms.servicebus.pool.diğer havuz yapılandırma ayarları Yapılandırma bölümünde ayrıntılı olarak yer alır. Bu kurulum, Azure Service Bus yük dengeleme özelliğini kullanarak performansı artırır ve trafiği birden çok uç noktaya dağıtır.CachingConnectionFactory: Bu fabrika, tümJmsTemplateçağrıları için tek bir bağlantıyı yeniden kullanır; bu da bağlantı oluşturma ek yükünü azaltır ve düşük trafikli senaryolar için idealdir. Ancak bu mod Azure Service Bus yük dengeleme özelliğini kullanmaz.ServiceBusJmsConnectionFactory: Bu modda,JmsTemplateiçin yapılan her çağrı yeni bir bağlantı oluşturur; bu da fazla kaynak tüketebilir ve daha az verimli olabilir.
Sınıf yolu içinde üç sınıfın tümü mevcut olduğunda hangisi kullanılır? Aşağıdaki tabloda, yapılandırma özelliklerine (Spring Cloud Azure 7.1.0 ve 6.2.0'dan bu yana) göre hangilerin kullanıldığı açıklanmaktadır:
spring.jms.servicebus.pool.enabled |
spring.jms.cache.enabled |
Gönderici ConnectionFactory |
Dinleyici Kapsayıcısı ConnectionFactory |
|---|---|---|---|
| ayarlanmadı | ayarlanmadı | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
| ayarlanmadı | true |
CachingConnectionFactory |
CachingConnectionFactory |
| ayarlanmadı | false |
ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
true |
ayarlanmadı | JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
true |
true |
CachingConnectionFactory |
CachingConnectionFactory |
true |
false |
JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
false |
ayarlanmadı | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
false |
true |
CachingConnectionFactory |
CachingConnectionFactory |
false |
false |
ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
Not
Aşağıdaki tabloda, hem ConnectionFactory hem de spring.jms.servicebus.pool.enabled farklı Spring Cloud Azure sürümleri için ayarlanmamışsa varsayılan spring.jms.cache.enabled gösterilmektedir:
| Spring Cloud Azure sürümü | Gönderen ConnectionFactory |
Dinleyici kapsayıcısı ConnectionFactory |
|---|---|---|
| >= 6.2.0 veya >= 7.1.0 | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
| 6.1.0 ve 7.0.0 | ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
| <= 6.1.0 | JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
Örnekler
Daha fazla bilgi için GitHub'daki azure-spring-boot-samples deposuna bakın.