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'ın 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 hizmetlerine bağlanmak için Microsoft Entra kimlik doğrulamasını kullanır. Microsoft Entra kimlik doğrulaması, Microsoft Entra Kimliği'nde tanımlanan kimlikleri kullanarak Azure Service Bus'a bağlanmaya yönelik bir mekanizmadır. Microsoft Entra kimlik doğrulaması ile Service Bus ve diğer Microsoft hizmetlerini 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 kimlik doğrulaması
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 zaman için 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ştirilmeymeyeceğini gösteren değer. Varsayılan değer true. |
| spring.jms.servicebus.idle-timeout | İstemcinin hiçbir ileti teslim edilmemişse Service Bus'ın bağlantıyı ne kadar süreyle canlı tutmasını beklediğini gösteren bağlantı 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ştirme. Varsayılan değer false. |
| spring.jms.servicebus.pricing-tier | Azure Service Bus Fiyat 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ılması ve durdurulması gereken 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-dayanıklı | 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 oluşturmak için false olarak ayarlayın. |
| spring.jms.servicebus.pool.block-if-full-timeout | Havuz hala doluysa özel durum oluşturmadan önce engelleme 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ı havuzu boşta kalma zaman aşımı. |
| spring.jms.servicebus.pool.max-connections |
Havuza alınan bağlantı sayısı üst sınırı. |
| spring.jms.servicebus.pool.max-sessions-per-connection | Havuzdaki bağlantı başına havuza alınan oturum sayısı üst sınırı. |
| spring.jms.servicebus.pool.time-between-expiration-check | Boşta bağlantı çıkarma iş parçacığı çalıştırmaları arasında uyku süresi. Negatif olduğunda boşta bağlantı çıkarma iş parçacığı çalıştırılır. |
| spring.jms.servicebus.pool.use-anonim-üreticiler | Yalnızca bir anonim MessageProducer örneğinin kullanılıp kullanılmayacağını gösteren bir değer. Her gerektiğinde bir false oluşturmak için MessageProducer olarak ayarlayın. |
| spring.jms.servicebus.prefetch-policy.all | Bu Service Bus ad alanında prefetch seçeneğinin geri dönüş değeri. Varsayılan değer 0. |
| spring.jms.servicebus.prefetch-policy.durable-topic-prefetch | Dayanıklı konu için ön koşul sayısı. Varsayılan değer 0. |
| spring.jms.servicebus.prefetch-policy.queue-browser-prefetch | Kuyruk tarayıcısı için ön koşul sayısı. Varsayılan değer 0. |
| spring.jms.servicebus.prefetch-policy.queue-prefetch | Kuyruk için ön koşul sayısı. Varsayılan değer 0. |
| spring.jms.servicebus.prefetch-policy.topic-prefetch | Konu için ön koşul 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 kullanılmasını destekler. Microsoft Entra Id ile, azure service bus veri sahibi
JMS ile Azure Service Bus'a bağlanma Yönetilen Kimlik kullanma
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 kimliğin kimliğini 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ı dizesini 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: öğesini ayarlayınspring.jms.servicebus.pool.enabled=true. Bu fabrika,spring.jms.servicebus.pool.max-connectionsgibi özelleştirilebilir seçeneklere sahip bir bağlantı havuzu tutar.spring.jms.servicebus.pool.ön ekli ek havuz yapılandırma ayarları, Yapılandırma bölümünde ayrıntılı olarak gösterilir. Bu kurulum, Azure Service Bus'ın yük dengeleme özelliğinden yararlanarak ve trafiği birden çok uç noktaya dağıtarak performansı artırır.CachingConnectionFactory: öğesini ayarlayınspring.jms.cache.enabled=true. Bu fabrika,JmsTemplatetüm çağrıları için tek bir bağlantıyı yeniden kullanarak düşük trafikli senaryolar için ideal olan bağlantı oluşturma yükünü azaltır. Ancak bu mod, Azure Service Bus'ın yük dengeleme özelliğinden yararlanmaz.ServiceBusJmsConnectionFactory: Havuz veyaspring.jms.cache.enabled=falseönbelleğe alma olmadan varsayılan değeri kullanmak için hem havuz hem de önbellek ayarlarını ayarlayınspring.jms.servicebus.pool.enabled=falseve bırakın. Bu modda, herJmsTemplateçağrısı, yoğun kaynak kullanımlı ve daha az verimli olabilecek yeni bir bağlantı oluşturur.
Not
Spring Cloud Azure 6.1.0'dan itibaren varsayılan ConnectionFactory olarak olarak ServiceBusJmsConnectionFactorydeğiştirilmiştir.
Örnekleri
Daha fazla bilgi için GitHub'daki azure-spring-boot-samples