Używanie interfejsu API usługi Java Message Service 2.0 z usługą Azure Service Bus Premium
W tym artykule wyjaśniono, jak korzystać z popularnego interfejsu API usługi Java Message Service (JMS) 2.0 do interakcji z usługą Azure Service Bus za pośrednictwem protokołu ADVANCED Message Queueing Protocol (AMQP) 1.0.
Uwaga
Obsługa interfejsu API JMS 2.0 jest dostępna tylko w warstwie Premium i w przypadku korzystania z biblioteki azure-servicebus-jms . Jeśli używasz bibliotek JMS innych niż azure-servicebus-jms (na przykład najnowsza wersja qpid-jms-client) w przestrzeni nazw w warstwie Premium, obserwujesz zachowanie JMS 1.1. Biblioteka azure-servicebus-jms nie tworzy blokady dostawcy jakiegokolwiek rodzaju, ponieważ nadal ma zależność od klienta qpid-jms. Wszystkie interfejsy API, które działają w bibliotece qpid-jms-client, działają również w bibliotece azure-servicebus-jms.
Biblioteka azure-servicebus-jms jest również biblioteką typu open source. Biblioteka azure-servicebus-jms została utworzona głównie tak, aby usługa Service Bus mogła odróżnić klientów wymagających zachowania JMS 1.1 (zgodność z poprzednimi wersjami) w porównaniu z zachowaniem JMS 2.0 podczas pracy z przestrzenią nazw Premium. Biblioteka azure-servicebus-jms udostępnia również pewne niezbędne wartości domyślne, takie jak wartości zasad pobierania wstępnego, ponowne nawiązywanie połączeń, obsługa identyfikatora Entra firmy Microsoft, obsługa tożsamości zarządzanej, obsługa automatycznego usuwania bezczynności dla jednostek wyrejestrowych.
Następująca ścieżka do pakietu azure-servicebus-jms to najnowsza wersja biblioteki opartej na specyfikacji Dżakarty Messaging (Jakarta.* API): Maven Central: com.azure:azure-servicebus-jms. Następująca ścieżka do biblioteki azure-servicebus-jms to najnowsza wersja biblioteki przed specyfikacją Dżakarty Messaging (javax.* API): Maven Central: com.microsoft.azure:azure-servicebus-jms.
Wymagania wstępne
Rozpoczynanie pracy z usługą Service Bus
W tym przewodniku założono, że masz już przestrzeń nazw usługi Service Bus. Jeśli tego nie zrobisz, utwórz przestrzeń nazw i kolejkę przy użyciu witryny Azure Portal. Aby uzyskać więcej informacji na temat tworzenia przestrzeni nazw i kolejek usługi Service Bus, zobacz Wprowadzenie do kolejek usługi Service Bus za pośrednictwem witryny Azure Portal.
Konfigurowanie środowiska deweloperskiego Java
Aby tworzyć aplikacje Java, należy skonfigurować odpowiednie środowisko programistyczne —
- Zainstalowano zestaw JDK (Java Development Kit) lub środowisko JRE (środowisko uruchomieniowe Java).
- Zestaw JDK lub JRE jest dodawany do ścieżki kompilacji i odpowiednich zmiennych systemowych.
- Środowisko IDE języka Java jest instalowane w celu korzystania z zestawu JDK lub środowiska JRE. Na przykład Eclipse lub IntelliJ.
Aby dowiedzieć się więcej na temat przygotowywania środowiska deweloperskiego dla języka Java na platformie Azure, skorzystaj z tego przewodnika.
Jakie funkcje JMS są obsługiwane?
W poniższej tabeli wymieniono funkcje usługi Java Message Service (JMS), które obecnie obsługuje usługa Azure Service Bus. Pokazuje również funkcje, które nie są obsługiwane.
Funkcja | interfejs API | Stan |
---|---|---|
Kolejki |
|
Obsługiwane |
Tematy |
|
Obsługiwane |
Kolejki tymczasowe |
|
Obsługiwane |
Tematy tymczasowe |
|
Obsługiwane |
Producent wiadomości / JMSProducer |
|
Obsługiwane |
Przeglądarki kolejek |
|
Obsługiwane |
Odbiorca wiadomości/ JMSConsumer |
noLocal nie jest obecnie obsługiwany |
Obsługiwane |
Udostępnione trwałe subskrypcje |
|
Obsługiwane |
Nieudostępniane trwałe subskrypcje |
wartość noLocal nie jest obecnie obsługiwana i powinna być ustawiona na wartość false |
Obsługiwane |
Udostępnione subskrypcje nietrwałe |
|
Obsługiwane |
Nieudostępne subskrypcje nietrwałe |
wartość noLocal nie jest obecnie obsługiwana i powinna być ustawiona na wartość false |
Obsługiwane |
Selektory komunikatów | zależy od utworzonego konsumenta | Obsługiwane |
Opóźnienie dostarczania (zaplanowane komunikaty) |
|
Obsługiwane |
Utworzono komunikat |
|
Obsługiwane |
Transakcje między jednostkami |
|
Obsługiwane |
Transakcje rozproszone | Nieobsługiwane |
Pobieranie biblioteki klienta usługi Java Message Service (JMS)
Aby użyć wszystkich funkcji dostępnych w warstwie Premium, dodaj następującą bibliotekę do ścieżki kompilacji projektu: azure-servicebus-jms. Ten pakiet udostępnia niektóre niezbędne wartości domyślne, takie jak wartości zasad pobierania wstępnego, ponowne nawiązywanie połączeń, identyfikator Entra firmy Microsoft i obsługa tożsamości zarządzanej poza polem.
Uwaga
Aby dodać plik azure-servicebus-jms do ścieżki kompilacji, użyj preferowanego narzędzia do zarządzania zależnościami dla projektu, takiego jak Maven lub Gradle.
Kodowanie aplikacji Java
Po zaimportowaniu zależności aplikacje Java można pisać w niezależny sposób od dostawcy JMS.
Nawiązywanie połączenia z usługą Azure Service Bus przy użyciu programu JMS
Aby nawiązać połączenie z usługą Azure Service Bus przy użyciu klientów JMS, potrzebne są parametry połączenia dostępne w obszarze "Zasady dostępu współdzielonego" w witrynie Azure Portal w obszarze Podstawowe parametry połączenia.
Tworzenie wystąpienia
ServiceBusJmsConnectionFactorySettings
ServiceBusJmsConnectionFactorySettings connFactorySettings = new ServiceBusJmsConnectionFactorySettings(); connFactorySettings.setConnectionIdleTimeoutMS(20000);
Utwórz wystąpienie elementu
ServiceBusJmsConnectionFactory
przy użyciu odpowiedniegoServiceBusConnectionString
elementu .String ServiceBusConnectionString = "<SERVICE_BUS_CONNECTION_STRING_WITH_MANAGE_PERMISSIONS>"; ConnectionFactory factory = new ServiceBusJmsConnectionFactory(ServiceBusConnectionString, connFactorySettings);
Użyj elementu
ConnectionFactory
, aby utworzyć element ,Connection
a następnieSession
Connection connection = factory.createConnection(); Session session = connection.createSession();
JMSContext
lub (dla klientów JMS 2.0)JMSContext jmsContext = factory.createContext();
Ważne
Mimo że podobnie nazwane, program JMS "Sesja" i usługa Service Bus "Sesja" są całkowicie niezależne od siebie.
W programie JMS 1.1 sesja jest podstawowym blokiem konstrukcyjnym interfejsu API, który umożliwia utworzenie
MessageProducer
elementu ,MessageConsumer
iMessage
samego siebie. Aby uzyskać więcej informacji, zapoznaj się z modelem programowania interfejsu API JMSW usłudze Service Bus sesje są konstrukcją po stronie usługi i klienta w celu włączenia przetwarzania FIFO w kolejkach i subskrypcjach.
Pisanie aplikacji JMS
Po utworzeniu wystąpienia elementu Session
lub JMSContext
aplikacja może używać znanych interfejsów API JMS do wykonywania zarówno operacji zarządzania, jak i danych. Zapoznaj się z listą obsługiwanych funkcji JMS, aby zobaczyć, które interfejsy API są obsługiwane. Oto kilka przykładowych fragmentów kodu, które umożliwiają rozpoczęcie pracy z programem JMS —
Wysyłanie komunikatów do kolejki i tematu
// 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);
Odbieranie komunikatów z kolejki
// 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();
Odbieranie komunikatów z udostępnionej trwałej subskrypcji tematu
// 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();
Podsumowanie
W tym przewodniku pokazano, jak aplikacje klienckie Java korzystające z usługi Java Message Service (JMS) za pośrednictwem protokołu AMQP 1.0 mogą wchodzić w interakcje z usługą Azure Service Bus.
Możesz również użyć protokołu AMQP usługi Service Bus 1.0 z innych języków, w tym .NET, C, Python i PHP. Składniki utworzone przy użyciu tych różnych języków mogą niezawodnie wymieniać komunikaty i w pełni wierność przy użyciu obsługi protokołu AMQP 1.0 w usłudze Service Bus.