Mevcut Java Message Service (JMS) 2.0 uygulamalarını Apache ActiveMQ'dan Azure Service Bus
Bu makalede, bir JMS Aracısı ile etkileşim kurarak Azure İleti Hizmeti (JMS) 2.0 uygulaması yerine Azure Service Bus değiştirme açıklanmıştır. Makale özellikle Apache ActiveMQ veya Amazon MQ'dan nasıl kaynakla ilgili bilgidir?
Azure Service Bus Gelişmiş İleti Kuyruğu Protokolü (AMQP) üzerinden JMS 2.0 API'sini kullanan Java 2 Platformu, Enterprise Sürümü ve Spring iş yüklerini destekler.
Başlamadan önce
Azure Service Bus ile Apache ActiveMQ arasındaki farklar
Azure Service Bus ve Apache ActiveMQ, istemci uygulamalarının ileti göndermesi ve buradan ileti almaları için JMS sağlayıcıları olarak görev alan ileti aracılarıdır. Her ikisi de kuyruklarla noktadan noktaya semantiği etkinleştirir ve konu başlıkları ve aboneliklerle yayımlama-abone olma semantiği sağlar.
Bu nedenle, aşağıdaki tabloda da olduğu gibi ikisi arasında bazı farklar vardır:
| Kategori | ActiveMQ | Azure Service Bus |
|---|---|---|
| Uygulama katmanlama | Kümelenmiş monolitik | İki katmanlı (ağ geçidi + arka uç) |
| Protokol desteği |
|
AMQP |
| Sağlama modu |
|
Yönetilen hizmet olarak platform (PaaS) |
| İleti boyutu | Müşteri tarafından yapılandırılabilir | 100 MB (Premium katmanı) |
| Yüksek kullanılabilirlik | Müşteri tarafından yönetilen | Platform tarafından yönetilen |
| Olağanüstü durum kurtarma | Müşteri tarafından yönetilen | Platform tarafından yönetilen |
Geçerli desteklenen ve desteklenmeyen özellikler
Aşağıdaki tabloda Azure'ın şu anda desteklediği Java Message Service (JMS) Service Bus listelemektedir. Ayrıca desteklenmeyen özellikleri de gösterir.
| Özellik | API | Durum |
|---|---|---|
| Kuyruklar |
|
Desteklenir |
| Konu başlıkları |
|
Desteklenir |
| Geçici kuyruklar |
|
Desteklenir |
| Geçici konular |
|
Desteklenir |
| İleti Üreticisi / JMSProducer |
|
Desteklenir |
| Kuyruk tarayıcıları |
|
Desteklenir |
| İleti Tüketicisi/ JMSConsumer |
noLocal şu anda desteklenmiyor |
Desteklenir |
| Paylaşılan dayanıklı abonelikler |
|
Desteklenir |
| Paylaşılmayan dayanıklı abonelikler |
noLocal şu anda desteklenmiyor ve false olarak ayarlandı |
Desteklenir |
| Paylaşılan dayanıklı olmayan abonelikler |
|
Desteklenir |
| Paylaşılmayan dayanıklı olmayan abonelikler |
noLocal şu anda desteklenmiyor ve false olarak ayarlandı |
Desteklenir |
| İleti seçiciler | oluşturulan tüketiciye bağlıdır | Desteklenir |
| Teslim Gecikmesi (zamanlanmış iletiler) |
|
Desteklenir |
| İleti oluşturuldu |
|
Desteklenir |
| Çapraz varlık işlemleri |
|
Desteklenir |
| Dağıtılmış işlemler | Desteklenmez |
Dikkat edilmesi gerekenler
Azure yönetiminin iki katmanlı yapısı Service Bus çeşitli iş sürekliliği özelliklerini (yüksek kullanılabilirlik ve olağanüstü durum kurtarma) karşılar. Ancak JMS özelliklerini kullanırken dikkat edilmesi gereken bazı noktalar vardır.
Hizmet yükseltmeleri
Service Bus yükseltmeleri ve yeniden başlatmaları durumunda geçici kuyruklar veya konular silinir. Uygulamanız geçici kuyruklarda veya konu başlıklarında veri kaybına duyarlı ise geçici kuyrukları veya konuları kullanmayın. Bunun yerine dayanıklı kuyruklar, konu başlıkları ve abonelikler kullanın.
Veri geçişi
İstemci uygulamalarınızı Azure Service Bus ile etkileşim kurmak için geçirme ve değiştirmenin bir parçası olarak, ActiveMQ'da bulunan veriler Service Bus. ActiveMQ kuyruklarını, konu başlıklarını ve aboneliklerini boşaltmak ve ardından iletileri bir uygulamanın kuyruklarında, konu başlıklarında ve aboneliklerinde yeniden oynatmak için özel bir Service Bus.
Kimlik doğrulaması ve yetkilendirme
Azure rol tabanlı erişim denetimi (Azure RBAC), Azure Active Directory için tercih edilen kimlik doğrulama mekanizmasıdır Service Bus. Azure RBAC veya talep tabanlı kimlik doğrulaması şu anda Apache QPID JMS tarafından destekleneneden, ancak kimlik doğrulaması için SAS anahtarlarını kullansanız gerekir.
Geçiş öncesi
Sürüm denetimi
JMS uygulamalarını yazarken aşağıdaki bileşenleri ve sürümleri kullanırsiniz:
| Bileşen | Sürüm |
|---|---|
| Java İleti Hizmeti (JMS) API'si | 1.1 veya daha büyük |
| AMQP protokolü | 1.0 |
AMQP bağlantı noktalarının açık olduğundan emin olun
Service Bus AMQP protokolü üzerinden iletişimi destekler. Bu amaçla 5671 (AMQP) ve 443 (TCP) bağlantı noktaları üzerinden iletişimi etkinleştirin. İstemci uygulamalarının nerede barındırıldıklarına bağlı olarak, bu bağlantı noktaları üzerinden iletişime izin vermek için bir destek biletine ihtiyacınız olabilir.
Önemli
Service Bus AMQP 1.0 protokolünü destekler.
Kurumsal yapılandırmaları ayarlama
Service Bus kurumsal güvenlik ve yüksek kullanılabilirlik özellikleri sağlar. Daha fazla bilgi için bkz.
- Sanal ağ hizmet uç noktaları
- Güvenlik duvarı
- Müşteri tarafından yönetilen anahtarla hizmet tarafında şifreleme (BYOK)
- Özel uç noktalar
- Kimlik doğrulaması ve yetkilendirme
İzleme, uyarılar ve izleme
Her bir Service Bus alanı için, ölçümleri her bir ad alanına Azure İzleyici. Ad alanına ayrılan kaynakların uyarı ve dinamik ölçeklendirmesi için bu ölçümleri kullanabilirsiniz.
Farklı ölçümler ve uyarılar ayarlama hakkında daha fazla bilgi için bkz. Service Bus'de Azure İzleyici. Ayrıca, veri işlemleri için istemci tarafı izleme ve yönetim işlemleri için işlem/tanılama günlüğü hakkında daha fazla bilgi bulabilirsiniz.
Ölçümler - New Relic
ActiveMQ'daki hangi ölçümlerin Azure'da hangi ölçümlerle eşlene Service Bus. Web sitesinden aşağıdakilere New Relic bakın:
Not
Şu New Relic ActiveMQ ile doğrudan, sorunsuz tümleştirmesi yok ancak Amazon MQ için ölçümleri var. Amazon MQ, ActiveMQ'dan türetilen bir tablo olduğundan, aşağıdaki tabloda Amazon MQ'New Relic Azure Service Bus.
| Ölçüm gruplama | Amazon MQ/ActiveMQ ölçümü | Azure Service Bus ölçümü |
|---|---|---|
| Broker | CpuUtilization |
CPUXNS |
| Broker | MemoryUsage |
WSXNS |
| Broker | CurrentConnectionsCount |
activeConnections |
| Broker | EstablishedConnectionsCount |
activeConnections + connectionsClosed |
| Broker | InactiveDurableTopicSubscribersCount |
Abonelik ölçümlerini kullanma |
| Broker | TotalMessageCount |
Kuyruk/konu başlığı/abonelik düzeyini kullanma activeMessages |
| Kuyruk/Konu | EnqueueCount |
incomingMessages |
| Kuyruk/Konu | DequeueCount |
outgoingMessages |
| Kuyruk | QueueSize |
sizeBytes |
Geçiş
Mevcut JMS 2.0 uygulamanızı Service Bus geçirmek için sonraki birkaç bölümdeki adımları izleyin.
activemq ' den topolojiyi dışarı aktarın ve Service Bus varlıkları oluşturun (isteğe bağlı)
istemci uygulamalarının Service Bus sorunsuzca bağlanmasına emin olmak için, topolojiyi (kuyruklar, konular ve abonelikler dahil) Apache activemq ' dan Service Bus geçirin.
Not
JMS uygulamaları için, çalışma zamanı işlemi olarak kuyruklar, konu başlıkları ve abonelikler oluşturursunuz. Çoğu JMS sağlayıcısı (ileti aracıları), çalışma zamanında bunları oluşturma olanağı sağlar. Bu, bu dışarı aktarma adımının isteğe bağlı olarak kabul edilmesine neden olur. Uygulamanızın çalışma zamanında topoloji oluşturma izinlerine sahip olduğundan emin olmak için, SAS izinleriyle bağlantı dizesini kullanın Manage .
Bunu yapmak için:
- Topolojiyi dışarı aktarmak için ActiveMQ komut satırı araçlarını kullanın.
- Azure Resource Manager şablonukullanarak aynı topolojiyi yeniden oluşturun.
- Azure Resource Manager şablonunu çalıştırın.
jms uygulamasının Service Bus maven bağımlılığını içeri aktarma
Service Bus ile sorunsuz bağlantı sağlamak için, azure-servicebus-jms paketi maven dosyasına bir bağımlılık olarak pom.xml aşağıdaki gibi ekleyin:
<dependencies>
...
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-servicebus-jms</artifactId>
</dependency>
...
</dependencies>
Uygulama sunucusu yapılandırma değişiklikleri
Bu bölüm, ActiveMQ ' a bağlanan istemci uygulamalarınızı barındıran uygulama sunucusuna özelleştirilir.
Yay uygulamaları
Dosyayı güncelleştirme application.properties
ActiveMQ 'e bağlanmak için bir Spring Boot uygulaması kullanıyorsanız, ActiveMQ 'e özgü özellikleri dosyadan kaldırmak istersiniz application.properties .
spring.activemq.broker-url=<ACTIVEMQ BROKER URL>
spring.activemq.user=<ACTIVEMQ USERNAME>
spring.activemq.password=<ACTIVEMQ PASSWORD>
sonra, Service Bus özgü özellikleri application.properties dosyaya ekleyin.
azure.servicebus.connection-string=Endpoint=myEndpoint;SharedAccessKeyName=mySharedAccessKeyName;SharedAccessKey=mySharedAccessKey
Değiştir ActiveMQConnectionFactory``ServiceBusJmsConnectionFactory
Bir sonraki adım, öğesinin örneğini ActiveMQConnectionFactory ile değiştirmek ServiceBusJmsConnectionFactory .
Not
Gerçek kod değişiklikleri uygulamaya özeldir ve bağımlılıkların yönetilmesi, ancak aşağıdaki örnek, nelerin değiştirilmesi gerektiğine ilişkin rehberlik sağlar.
Daha önce, bir nesnesini şu şekilde örnekleniyor olabilirsiniz ActiveMQConnectionFactory :
String BROKER_URL = "<URL of the hosted ActiveMQ broker>";
ConnectionFactory factory = new ActiveMQConnectionFactory(BROKER_URL);
Connection connection = factory.createConnection();
connection.start();
Şimdi bunu bir nesnesinin örneğini oluşturmak için şu ServiceBusJmsConnectionFactory şekilde değiştiriyorsunuz:
ServiceBusJmsConnectionFactorySettings settings = new ServiceBusJmsConnectionFactorySettings();
String SERVICE_BUS_CONNECTION_STRING = "<Service Bus Connection string>";
ConnectionFactory factory = new ServiceBusJmsConnectionFactory(SERVICE_BUS_CONNECTION_STRING, settings);
Connection connection = factory.createConnection();
connection.start();
Geçiş sonrası
artık uygulamayı Service Bus iletileri göndermeye ve almaya başlamak üzere değiştirdiğine göre, bunun beklendiği gibi çalıştığını doğrulamanız gerekir. Bu tamamlandığında, uygulama yığınınızı daha da belirginleştirmek ve modernleştirin için devam edebilirsiniz.
Sonraki adımlar
Service Bus ile sorunsuz tümleştirme için jms Service Bus Azure için Spring Boot Starter 'ı kullanın.
Service Bus mesajlaşma ve jms hakkında daha fazla bilgi edinmek için bkz.: