Azure Service Bus JMS 2.0 geliştirici kılavuzu
Bu kılavuz, Java İleti Hizmeti (JMS) 2.0 API'sini kullanarak Azure Service Bus ile iletişimde başarılı olmanıza yardımcı olacak ayrıntılı bilgiler içerir.
Java geliştiricisi olarak, Azure Service Bus'ı kullanmaya yeni başladıysanız aşağıdaki makaleleri okumayı göz önünde bulundurun.
Başlarken | Kavramlar |
---|---|
Java İleti Hizmeti (JMS) Programlama modeli
Java İleti Hizmeti API programlama modeli aşağıdaki bölümlerde gösterildiği gibi:
Not
Azure Service Bus Premium katmanı JMS 1.1 ve JMS 2.0'ı destekler.
Azure Service Bus - Standart katman sınırlı JMS 1.1 işlevselliğini destekler. Daha fazla ayrıntı için lütfen bu belgelere bakın.
JMS - Yapı taşları
Aşağıdaki yapı taşları JMS uygulamasıyla iletişim kurmak için kullanılabilir.
Not
Aşağıdaki kılavuz, Java İleti Hizmeti (JMS) için Oracle Java EE 6 Öğreticisi'nden uyarlanmıştır
Java İleti Hizmeti'ni (JMS) daha iyi anlamak için bu öğreticiye başvurmanız önerilir.
Bağlan ion fabrikası
Bağlantı fabrikası nesnesi, istemci tarafından JMS sağlayıcısına bağlanmak için kullanılır. Bağlantı fabrikası, yönetici tarafından tanımlanan bir dizi bağlantı yapılandırma parametresini kapsüller.
Her bağlantı fabrikası , QueueConnectionFactory
veya TopicConnectionFactory
arabiriminin ConnectionFactory
bir örneğidir.
Azure Service Bus'a bağlanmayı kolaylaştırmak için bu arabirimler sırasıyla , ServiceBusJmsQueueConnectionFactory
veya ServiceBusJmsTopicConnectionFactory
aracılığıyla ServiceBusJmsConnectionFactory
uygulanır.
Önemli
JMS 2.0 API'sini kullanan Java uygulamaları, bağlantı dizesi kullanarak veya Microsoft Entra destekli kimlik doğrulamasından yararlanan bir TokenCredential
kullanarak Azure Service Bus'a bağlanabilir. Microsoft Entra destekli kimlik doğrulamasını kullanırken, gerektiğinde kimliğe roller ve izinler atadığınızdan emin olun.
- Sistem Tarafından Atanan Yönetilen Kimlik
- Kullanıcı Tarafından Atanan Yönetilen Kimlik
- Hizmet Sorumlusu
- Bağlan ion dizesi kimlik doğrulaması
Azure'da sistem tarafından atanan bir yönetilen kimlik oluşturun ve oluşturmak için TokenCredential
bu kimliği kullanın.
TokenCredential tokenCredential = new DefaultAzureCredentialBuilder().build();
daha sonra Bağlan ion fabrikası aşağıdaki parametrelerle örneklenebilir.
- Belirteç kimlik bilgisi - OAuth belirteci sağlayabilen bir kimlik bilgilerini temsil eder.
- Konak - Azure Service Bus Premium katmanı ad alanının ana bilgisayar adı.
- ServiceBusJms Bağlan ionFactory Ayarlar özellik paketi;
- connectionIdleTimeoutMS - milisaniye cinsinden boşta bağlantı zaman aşımı.
- traceFrames - hata ayıklama için AMQP izleme çerçevelerini toplamak için boole bayrağı.
- diğer yapılandırma parametreleri
Fabrika burada gösterildiği gibi oluşturulabilir. Belirteç kimlik bilgileri ve konak gerekli parametrelerdir, ancak diğer özellikler isteğe bağlıdır.
String host = "<YourNamespaceName>.servicebus.windows.net";
ConnectionFactory factory = new ServiceBusJmsConnectionFactory(tokenCredential, host, null);
JMS hedefi
Hedef, istemcinin ürettiği iletilerin hedefini ve kullandığı iletilerin kaynağını belirtmek için kullandığı nesnedir.
Hedefler Azure Service Bus'taki varlıklarla eşleniyor - kuyruklar (noktadan noktaya senaryolarda) ve konular (pub-sub senaryolarında).
Bağlantılar
Bağlantı, bir JMS sağlayıcısıyla sanal bağlantıyı kapsüller. Azure Service Bus ile uygulama ile AMQP üzerinden Azure Service Bus arasında durum bilgisi olan bir bağlantıyı temsil eder.
Aşağıdaki örnekte gösterildiği gibi bağlantı fabrikasından bir bağlantı oluşturulur:
Connection connection = factory.createConnection();
Oturumlar
Oturum, iletilerin üretilmesine ve kullanılmasına yönelik tek iş parçacıklı bir bağlamdır. İletiler, ileti üreticileri ve tüketicileri oluşturmak için kullanılabilir, ancak aynı zamanda gönderme ve alma işlemlerinin atomik bir çalışma birimine gruplanması için işlem bağlamı sağlar.
Aşağıdaki örnekte gösterildiği gibi bağlantı nesnesinden bir oturum oluşturulabilir:
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
Not
JMS API,mesajlaşma oturumlarının etkinleştirildiği hizmet veri yolu kuyruklarından veya konu başlıklarından ileti almayı desteklemez.
Oturum modları
Aşağıdaki modlardan herhangi biriyle oturum oluşturulabilir.
Oturum modları | Davranış |
---|---|
Session.AUTO_ACKNOWLEDGE | Oturum, istemcinin bir iletiyi alma çağrısından başarıyla döndürdüğünde veya oturumun çağırdığı ileti dinleyicisi iletiyi başarıyla döndürdüğünde istemcinin bir iletiyi aldığını otomatik olarak kabul eder. |
Session.CLIENT_ACKNOWLEDGE | İstemci, iletinin onay yöntemini çağırarak tüketilen iletiyi kabul eder. |
Session.DUPS_OK_ACKNOWLEDGE | Bu bildirim modu, oturuma iletilerin teslimini lazily kabul etme talimatını sağlar. |
Session.SESSION_TRANSACTED | Bu değer, oturumun yerel bir işlem kullanması gerektiğini belirtmek için Bağlan ion nesnesindeki createSession(int sessionMode) yöntemine bağımsız değişken olarak geçirilebilir. |
Oturum modu belirtilmediğinde, Session.AUTO_ACKNOWLEDGE varsayılan olarak seçilir.
JMSContext
Not
JMSContext, JMS 2.0 belirtiminin bir parçası olarak tanımlanır.
JMSContext, bağlantı ve oturum nesnesi tarafından sağlanan işlevselliği birleştirir. Bağlantı fabrikası nesnesinden oluşturulabilir.
JMSContext context = connectionFactory.createContext();
JMSContext modları
Session nesnesi gibi JMSContext de Oturum modlarında belirtilen onay modlarıyla oluşturulabilir.
JMSContext context = connectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE);
Mod belirtilmediğinde, JMSContext.AUTO_ACKNOWLEDGE varsayılan olarak seçilir.
JMS ileti üreticileri
İleti üreticisi, JMSContext veya Session kullanılarak oluşturulan ve bir hedefe ileti göndermek için kullanılan bir nesnedir.
Aşağıdaki örnekte gösterildiği gibi tek başına nesne olarak oluşturulabilir:
JMSProducer producer = context.createProducer();
Veya bir iletinin gönderilmesi gerektiğinde çalışma zamanında oluşturulur.
context.createProducer().send(destination, message);
JMS ileti tüketicileri
İleti tüketicisi, JMSContext veya Session tarafından oluşturulan ve hedefe gönderilen iletileri almak için kullanılan bir nesnedir. Bu örnekte gösterildiği gibi oluşturulabilir:
JMSConsumer consumer = context.createConsumer(dest);
receive() yöntemiyle zaman uyumlu almalar
İleti tüketicisi, yöntemi aracılığıyla receive()
hedeften ileti almak için zaman uyumlu bir yol sağlar.
Hiçbir bağımsız değişken/zaman aşımı belirtilmezse veya '0' zaman aşımı belirtilirse, ileti ulaşmadığı veya bağlantı kesilmediği sürece (hangisi daha önceyse) tüketici süresiz olarak engeller.
Message m = consumer.receive();
Message m = consumer.receive(0);
Sıfır olmayan pozitif bir bağımsız değişken sağlandığında, tüketici bu süreölçer süresi dolana kadar engeller.
Message m = consumer.receive(1000); // time out after one second.
JMS ileti dinleyicileriyle zaman uyumsuz almalar
İleti dinleyicisi, hedefteki iletilerin zaman uyumsuz işlenmesi için kullanılan bir nesnedir. Belirli bir iş mantığının MessageListener
onMessage
yaşaması gereken yöntemi içeren arabirimini uygular.
bir ileti dinleyicisi nesnesinin örneği oluşturulmalıdır ve yöntemini kullanarak belirli bir ileti tüketicisine setMessageListener
kaydedilmelidir.
Listener myListener = new Listener();
consumer.setMessageListener(myListener);
Konu başlıklarından kullanma
JMS İleti Tüketicileri , kuyruk veya konu başlığı olabilecek bir hedefe karşı oluşturulur.
Kuyruklardaki tüketiciler, istemci uygulaması ile Azure Service Bus arasındaki Oturum (ve Bağlan ion) bağlamında yaşayan istemci tarafı nesneleridir.
Ancak konu başlıklarındaki tüketicilerin 2 bölümü vardır -
- Session(veya JMSContext) bağlamında bulunan bir istemci tarafı nesnesi ve
- Azure Service Bus'ta bir varlık olan abonelik.
Abonelikler burada belgelenmiştir ve aşağıdakilerden biri olabilir:
- Paylaşılan dayanıklı abonelikler
- Paylaşılan dayanıklı olmayan abonelikler
- Paylaşılmayan dayanıklı abonelikler
- Paylaşılmayan dayanıklı olmayan abonelikler
JMS Kuyruk Tarayıcıları
JMS API'sinde, uygulamanın kuyruktaki iletilere göz atmasına ve her ileti için üst bilgi değerlerini görüntülemesine olanak tanıyan bir QueueBrowser
nesne sağlanır.
Kuyruk Tarayıcısı, aşağıdaki örnekte olduğu gibi JMSContext kullanılarak oluşturulabilir:
QueueBrowser browser = context.createBrowser(queue);
Not
JMS API bir konuya göz atmak için bir API sağlamaz.
Bunun nedeni, konu başlığının iletileri depolamamasıdır. İleti konuya gönderilir gönderilmez uygun aboneliklere iletilir.
JMS İleti seçicileri
İleti seçicileri, alınan iletileri filtrelemek için uygulamalar tarafından kullanılabilir. İleti seçicilerle, alıcı uygulama iletileri filtreleme işini bu sorumluluğu almak yerine JMS sağlayıcısına (bu örnekte Azure Service Bus) yükler.
Seçiciler aşağıdaki tüketicilerden herhangi birini oluştururken kullanılabilir -
- Paylaşılan dayanıklı abonelik
- Paylaşılmayan dayanıklı abonelik
- Paylaşılan dayanıklı olmayan abonelik
- Paylaşılmayan dayanıklı olmayan abonelik
- Kuyruk tarayıcısı
AMQP dağıtımı ve Service Bus işlem eşlemesi
AMQP dağıtımının Service Bus işlemine nasıl çevrildiği şöyledir:
ACCEPTED = 1; -> Complete()
REJECTED = 2; -> DeadLetter()
RELEASED = 3; (just unlock the message in service bus, will then get redelivered)
MODIFIED_FAILED = 4; -> Abandon() which increases delivery count
MODIFIED_FAILED_UNDELIVERABLE = 5; -> Defer()
Özet
Bu geliştirici kılavuzunda Java İleti Hizmeti (JMS) kullanan Java istemci uygulamalarının Azure Service Bus'a nasıl bağlanabileceği gösterildi.
Sonraki adımlar
Azure Service Bus hakkında daha fazla bilgi ve Java İleti Hizmeti (JMS) varlıkları hakkında daha fazla bilgi için aşağıdaki makalelere göz atın:
- Service Bus - Kuyruklar, Konular ve Abonelikler
- Service Bus - Java İleti Hizmeti varlıkları
- Azure Service Bus'ta AMQP 1.0 desteği
- Service Bus AMQP 1.0 Geliştirici Kılavuzu
- Service Bus kuyrukları ile çalışmaya başlama
- Java İleti Hizmeti API'si (dış Oracle belgesi)
- ActiveMQ'dan Service Bus'a geçiş yapmayı öğrenin